Перейти к содержимому

Создание ВМ из образа, размещенного в другом проекте

Вы можете создать ВМ из образа, размещенного в другом проекте той же организации. Создать такую ВМ можно с помощью утилиты MWS CLI.

В этом руководстве используются следующие имена для проектов:

  • source — проект-источник, где расположен образ, на основании которого будет создана новая ВМ в другом проекте;
  • target — целевой проект, в котором будет создана новая ВМ на основе образа из проекта source.

Создать ВМ из образа можно с помощью разных типов аккаунтов: пользователя, федеративного или сервисного. От типа аккаунта будет зависеть способ аутентификации, который вы выберете при установке MWS CLI.

Чтобы создание ВМ прошло успешно, необходима роль compute.image.user на проекте source для субъектов, перечисленных в таблице:

СубъектТип аутентификацииЗачем нужен доступ
Сервисный агент compute в проекте targetЛюбой тип аккаунта и аутентификацииЧтобы сервисный агент мог прочитать образ при создании ВМ
Пользователь или федеративный аккаунт, который будет создавать ВМВ браузере с помощью OAuth FlowЧтобы пользователь проекта target мог указать образ при создании ВМ
Сервисный аккаунт, от имени которого будет создана ВМЛюбой из способов аутентификации с помощью сервисного аккаунтаЧтобы сервисный аккаунт проекта target мог прочитать образ при создании ВМ
  1. Создайте сеть и подсеть в проекте target.
  2. Если у вас нет образа в проекте source, создайте его.
  3. Для установки MWS CLI выберите устройство, поддерживающее работу с командной строкой. Используйте личный компьютер или создайте промежуточную ВМ.
  1. Подключитесь к терминалу на вашем компьютере или к промежуточной ВМ.

  2. Инициализируйте профиль MWS CLI, используя проект target и имя профиля default. Выберите нужный тип аутентификации в зависимости от типа аккаунта, используемого при создании ВМ::

Права для сервисного агента выдаются один раз при связывании проектов:

  1. В веб-консоли выберите проект source.

  2. На дашборде проекта перейдите на вкладку Доступы к проекту и нажмите кнопку Настроить.

  3. Выберите Сервисные агентыВыбрать из списка и укажите настройки:

    • Проектtarget;
    • ID сервисного агентаcompute;
    • Роли в проектеcompute.image.user.
  4. Нажмите кнопку Подтвердить.

  1. В веб-консоли выберите проект source.

  2. На дашборде проекта перейдите на вкладку Доступы к проекту и нажмите кнопку Настроить.

  3. В зависимости от типа аккаунта настройте права:

    • Пользовательский
    • Федеративный
    • Сервисный
    1. Выберите Пользователи и укажите настройки:

      • E-mail или имя — электронная почта или имя пользователя, можно указать несколько значений;
      • Роли в проектеcompute.image.user.
    2. Нажмите кнопку Подтвердить.

  1. Вернитесь в сессию командной строки на вашем компьютере или промежуточной ВМ.

  2. Убедитесь, что профиль MWS CLI настроен на работу с проектом target:

    bash
    mws profile get default

    Ожидаемый результат:

    bash
    +---------+--------------------+-----------------+
    | NAME | USER | DEFAULT PROJECT |
    +---------+--------------------+-----------------+
    | default | <имя пользователя> | target |
    +---------+--------------------+-----------------+
  3. Создайте файл vm-template.yaml с конфигурацией ВМ, которая будет создана из образа:

    yaml
    metadata:
    description: "VM created from template"
    spec:
    vmType: "gen-4-8"
    zone: "ru-central1-b"
    hardware:
    gracefulShutdownTimeout: 90s
    power: "ON"
    network:
    networkInterfaces:
    - name: "eth0"
    primary: true
    addresses:
    - address:
    spec:
    subnet: "vpc/projects/target/networks/<имя сети>/subnets/<имя подсети>"
    oneToOneNat:
    external:
    address:
    spec: {}
    os:
    hostname: ""
    localDomain: ""
    metadata:
    attributes:
    user-data: |
    users:
    - name: user # Укажите имя пользователя для ВМ
    groups: sudo
    shell: /bin/bash
    sudo: 'ALL=(ALL) NOPASSWD:ALL'
    ssh_authorized_keys:
    - ssh-ed25519 AAAAC3NzaC... user # Укажите SSH-ключ пользователя
    standardDnsRecords: true
    storage:
    disks:
    - name: "boot"
    boot: true
    deviceName: "boot"
    disk:
    spec:
    diskType: "nbs-pl2"
    size: 20GB
    source:
    image: projects/source/images/<имя образа>
  4. Выполните команду создания ВМ:

    bash
    mws compute vm create <имя новой ВМ> --body @vm-template.yaml
  5. Дождитесь, пока ВМ перейдет в статус OK:

    bash
    mws compute vm list

Ресурсы, созданные в руководстве, тарифицируются. Если вы больше не планируете использовать их:

  1. Удалите ВМ, созданную из образа.
  2. Если вы использовали промежуточную ВМ, удалите ее.
  3. Если вы создавали тестовый образ, удалите его.