Перенести виртуальную машину в другое облако
Переместить виртуальную машину в другое облако невозможно, но вы можете создать образ из ее загрузочного диска, а затем создать виртуальную машину в другом облаке из этого образа.
-
Создайте образ из загрузочного диска нужной виртуальной машины.
-
Получите идентификатор образа загрузочного диска:
Консоль управленияCLITerraformAPI- В консоли управления
выберите каталог, в котором находится образ диска. - Выберите сервис Compute Cloud.
- На панели слева выберите
Образы. - Скопируйте значение из столбца Идентификатор нужного образа.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду
yc config set folder-id <идентификатор_каталога>
. Также для любой команды вы можете указать другой каталог с помощью параметров--folder-name
или--folder-id
.Получите список образов дисков в каталоге по умолчанию:
yc compute image list
Результат:
+----------------------+----------------+--------+-------------+--------+ | ID | NAME | FAMILY | PRODUCT IDS | STATUS | +----------------------+----------------+--------+-------------+--------+ | xc8n3spmksqm******** | original-image | | | READY | +----------------------+----------------+--------+-------------+--------+
Terraform
позволяет быстро создать облачную инфраструктуру в Yandex Cloud и управлять ею с помощью файлов конфигураций. В файлах конфигураций хранится описание инфраструктуры на языке HCL (HashiCorp Configuration Language). При изменении файлов конфигураций Terraform автоматически определяет, какая часть вашей конфигурации уже развернута, что следует добавить или удалить.Terraform распространяется под лицензией Business Source License
, а провайдер Yandex Cloud для Terraform — под лицензией MPL-2.0 .Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
или в зеркале .Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
-
В конфигурационном файле подготовьте переменную
output
с выходными данными:resource "yandex_compute_snapshot" "snapshot-1" { name = "<имя_образа>" source_disk_id = "<идентификатор_диска>" } ... output "snapshot_id" { value = yandex_compute_snapshot.snapshot-1.id }
Где
value
— идентификатор образа загрузочного диска. В примере выше образ загрузочного диска описан в ресурсеyandex_compute_snapshot
с именемsnapshot-1
. -
Примените изменения:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validate
Если конфигурация является корректной, появится сообщение:
Success! The configuration is valid.
-
Выполните команду:
terraform plan
В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply
-
Подтвердите изменения: введите в терминале слово
yes
и нажмите Enter.
-
-
Сохраните идентификатор образа загрузочного диска в файл
snapshot_id.txt
с помощью консольной команды:terraform output snapshot_id > snapshot_id.txt
Воспользуйтесь методом REST API list для ресурса Image или вызовом gRPC API ImageService/List.
- В консоли управления
-
Получите идентификатор целевого облака, в которое вы планируете перенести виртуальную машину (далее —
<идентификатор_облака_назначения>
):Консоль управленияCLITerraformAPI- В консоли управления
в списке слева нажмите на нужное облако. - На вкладке Обзор скопируйте значение из поля Идентификатор.
Получите список облаков с идентификаторами:
yc resource-manager cloud list
Результат:
+----------------------+------------+--------------------------+ | ID | NAME | ORGANIZATION ID | +----------------------+------------+--------------------------+ | b1g66mft1vop******** | my-cloud-1 | | | b1gd129pp9ha******** | my-cloud-2 | | +----------------------+------------+--------------------------+
-
В конфигурационном файле подготовьте переменную
output
с выходными данными:resource "yandex_resourcemanager_cloud" "cloud-1" { name = "<имя_облака>" organization_id = "<идентификатор_организации>" } output "destination_cloud_id" { value = yandex_resourcemanager_cloud.cloud-1.id }
Где
destination_cloud_id
— идентификатор целевого облака. В примере выше облако описано в ресурсеyandex_resourcemanager_cloud
с именемcloud-1
. -
Примените изменения:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validate
Если конфигурация является корректной, появится сообщение:
Success! The configuration is valid.
-
Выполните команду:
terraform plan
В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply
-
Подтвердите изменения: введите в терминале слово
yes
и нажмите Enter.
-
-
Сохраните идентификатор целевого облака
destination_cloud_id.txt
с помощью консольной команды:terraform output destination_cloud_id > destination_cloud_id.txt
Чтобы получить список облаков с идентификаторами, воспользуйтесь методом REST API list для ресурса Cloud или вызовом gRPC API CloudService/List.
- В консоли управления
-
Добавьте пользователя из целевого облака (куда планируете перенести виртуальную машину) в облако, где расположен каталог с исходным образом.
-
Назначьте пользователю целевого облака роли
resource-manager.clouds.member
иcompute.images.user
на облако, где расположен каталог с исходным образом. -
Создайте новый образ в целевом облаке:
CLIAPIyc compute image create \ --name <имя_нового_образа> \ --source-image-id <идентификатор_исходного_образа> \ --cloud-id <идентификатор_облака_назначения> \ --folder-id <идентификатор_каталога_назначения>
Воспользуйтесь методом REST API create для ресурса Image или вызовом gRPC API ImageService/Create. В запросе укажите идентификатор образа.
-
Создайте виртуальную машину из созданного образа в целевом облаке.