Создание ВМ из образа, размещенного в другом проекте
Вы можете создать ВМ из образа, размещенного в другом проекте той же организации. Создать такую ВМ можно с помощью утилиты MWS CLI.
В этом руководстве используются следующие имена для проектов:
source— проект-источник, где расположен образ, на основании которого будет создана новая ВМ в другом проекте;target— целевой проект, в котором будет создана новая ВМ на основе образа из проектаsource.
Создать ВМ из образа можно с помощью разных типов аккаунтов: пользователя, федеративного или сервисного. От типа аккаунта будет зависеть способ аутентификации, который вы выберете при установке MWS CLI.
Чтобы создание ВМ прошло успешно, необходима роль compute.image.user на проекте source для субъектов, перечисленных в таблице:
| Субъект | Тип аутентификации | Зачем нужен доступ |
|---|---|---|
Сервисный агент compute в проекте target | Любой тип аккаунта и аутентификации | Чтобы сервисный агент мог прочитать образ при создании ВМ |
| Пользователь или федеративный аккаунт, который будет создавать ВМ | В браузере с помощью OAuth Flow | Чтобы пользователь проекта target мог указать образ при создании ВМ |
| Сервисный аккаунт, от имени которого будет создана ВМ | Любой из способов аутентификации с помощью сервисного аккаунта | Чтобы сервисный аккаунт проекта target мог прочитать образ при создании ВМ |
Перед началом работы
Заголовок раздела «Перед началом работы»- Если у вас нет образа в проекте
source, создайте его. - Для установки MWS CLI выберите устройство, поддерживающее работу с командной строкой. Используйте личный компьютер или создайте промежуточную ВМ.
1. Подготовьте окружение
Заголовок раздела «1. Подготовьте окружение»Подключитесь к терминалу на вашем компьютере или к промежуточной ВМ.
Инициализируйте профиль MWS CLI, используя проект
targetи имя профиляdefault. Выберите нужный тип аутентификации в зависимости от типа аккаунта, используемого при создании ВМ::- Пользовательский или федеративный аккаунт — выберите аутентификацию в браузере с помощью OAuth flow.
- Сервисный аккаунт — выберите аутентификацию с помощью привязки сервисного аккаунта или аутентификацию с помощью OAuth flow и сервисного аккаунта.
2. Настройте права для сервисного агента
Заголовок раздела «2. Настройте права для сервисного агента»Права для сервисного агента выдаются один раз при связывании проектов:
В веб-консоли выберите проект
source.На дашборде проекта перейдите на вкладку Доступы к проекту и нажмите кнопку Настроить.
Выберите Сервисные агенты → Выбрать из списка и укажите настройки:
- Проект —
target; - ID сервисного агента —
compute; - Роли в проекте —
compute.image.user.
Нажмите кнопку Подтвердить.
3. Настройте права для аккаунта
Заголовок раздела «3. Настройте права для аккаунта»В веб-консоли выберите проект
source.На дашборде проекта перейдите на вкладку Доступы к проекту и нажмите кнопку Настроить.
В зависимости от типа аккаунта настройте права:
- Пользовательский
- Федеративный
- Сервисный
Выберите Пользователи и укажите настройки:
- E-mail или имя — электронная почта или имя пользователя, можно указать несколько значений;
- Роли в проекте —
compute.image.user.
Нажмите кнопку Подтвердить.
4. Создайте ВМ из образа
Заголовок раздела «4. Создайте ВМ из образа»Вернитесь в сессию командной строки на вашем компьютере или промежуточной ВМ.
Убедитесь, что профиль MWS CLI настроен на работу с проектом
target:bash mws profile get defaultОжидаемый результат:
bash +---------+--------------------+-----------------+| NAME | USER | DEFAULT PROJECT |+---------+--------------------+-----------------+| default | <имя пользователя> | target |+---------+--------------------+-----------------+Создайте файл
vm-template.yamlс конфигурацией ВМ, которая будет создана из образа:yaml metadata:description: "VM created from template"spec:vmType: "gen-4-8"zone: "ru-central1-b"hardware:gracefulShutdownTimeout: 90spower: "ON"network:networkInterfaces:- name: "eth0"primary: trueaddresses:- address:spec:subnet: "vpc/projects/target/networks/<имя сети>/subnets/<имя подсети>"oneToOneNat:external:address:spec: {}os:hostname: ""localDomain: ""metadata:attributes:user-data: |users:- name: user # Укажите имя пользователя для ВМgroups: sudoshell: /bin/bashsudo: 'ALL=(ALL) NOPASSWD:ALL'ssh_authorized_keys:- ssh-ed25519 AAAAC3NzaC... user # Укажите SSH-ключ пользователяstandardDnsRecords: truestorage:disks:- name: "boot"boot: truedeviceName: "boot"disk:spec:diskType: "nbs-pl2"size: 20GBsource:image: projects/source/images/<имя образа>Выполните команду создания ВМ:
bash mws compute vm create <имя новой ВМ> --body @vm-template.yamlДождитесь, пока ВМ перейдет в статус
OK:bash mws compute vm list
Удалите платные ресурсы
Заголовок раздела «Удалите платные ресурсы»Ресурсы, созданные в руководстве, тарифицируются. Если вы больше не планируете использовать их:
- Удалите ВМ, созданную из образа.
- Если вы использовали промежуточную ВМ, удалите ее.
- Если вы создавали тестовый образ, удалите его.