Создать виртуальную машину с оборудованием поколения Gen 2
Виртуальная машина работает на оборудовании того поколения, которое закреплено за носителем, на основе которого создана эта ВМ — образом, снимком или диском.
Поэтому, чтобы создать виртуальную машину, работающую на оборудовании поколения Gen 2, необходимо предварительно создать носитель, за которым закреплено поколение Gen 2, а затем с использованием этого носителя создать виртуальную машину.
Чтобы создать виртуальную машину, работающую на виртуализированном оборудовании поколения Gen 2:
- Подготовьте носитель одного из следующих типов: образ, снимок или диск.
- Создайте виртуальную машину на основе подготовленного носителя.
Создайте образ с закреплением поколения оборудования Gen 2
Создать образ виртуальной машины с закреплением поколения оборудования Gen 2 вы можете как из собственного образа, предварительно загруженного в Yandex Cloud, так и на основе уже имеющихся в Yandex Cloud образов, снимков и дисков.
Загрузите свой образ диска в Yandex Cloud
Вы можете загрузить в Compute Cloud свой собственный образ виртуальной машины с поддержкой UEFI и GPT, чтобы на его основе создавать виртуальные машины, работающие на оборудовании поколения Gen 2. Создать образ в Compute Cloud можно из подготовленного файла образа, загруженного в Yandex Object Storage.
Подготовьте файл с образом
Для образов загрузочного диска должны выполняться следующие требования:
- Установлены драйверы
virtio-net,virtio-blkиvirtio-pci. Если вы собираетесь подключать к виртуальной машине файловые хранилища, также должен быть установлен драйверvirtiofs. См. инструкцию. - Терминал
ttyS0(порт COM1) настроен в качестве серийной консоли. См. инструкцию. - Сетевой интерфейс корректно запускается при старте ВМ и получает IP-адрес по DHCP.
- Пакет
cloud-initустановлен и настроен для работы с нашим сервисом метаданных. Установить пакет для CentOS можно с помощью командыsudo yum install cloud-init, для Debian или Ubuntu —sudo apt update && sudo apt install -y cloud-init. - Если образ создан на основе Amazon Machine Image (AMI), в настройках
cloud-initотключена проверка облачной платформы, на которой запускается ВМ. См. инструкцию. - В настройках системного файрвола открыт необходимый минимум портов для работы ваших приложений, а также порт для доступа по SSH (по умолчанию это порт 22 TCP).
- SSH-сервер запускается автоматически при старте ВМ.
- Сервисы с вашим приложением устойчивы к перезагрузке ВМ.
- Для загрузочного диска используется MBR-разбивка.
- Диск смонтирован по UUID, а не по имени.
- Файловая система не зашифрована.
Поддерживаемые форматы: Qcow2, VMDK, RAW и VHD.
Инструкции по настройке см. в разделе Подготовить свой образ диска.
Загрузите файл образа в Object Storage
Загрузите файл с образом в сервис Object Storage и получите ссылку на загруженный образ:
- Если у вас еще нет бакета в Object Storage, создайте его с ограниченным доступом.
- Загрузите образ в ваш бакет, например, через консоль управления, с помощью AWS CLI или WinSCP. В терминах Object Storage загружаемый файл образа будет называться объектом.
- Получите подписанную ссылку на скачивание образа из бакета. Используйте эту ссылку при создании образа в Compute Cloud.
Создайте в Compute Cloud образ с закреплением поколения оборудования Gen 2
Чтобы создать новый образ по ссылке, полученной в Object Storage:
-
В консоли управления выберите каталог, в котором вы хотите создать образ.
-
Перейдите в сервис Compute Cloud.
-
На панели слева выберите
Образы. -
Нажмите кнопку Загрузить образ и в открывшемся окне:
-
В поле Имя задайте имя образа. Требования к имени:
- длина — от 2 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
(Опционально) В полях Описание и Метки добавьте произвольное описание и метки создаваемого образа.
-
В поле Ссылка на образ в Object Storage вставьте ссылку на файл с образом, полученную ранее в Object Storage.
-
В поле Поколение оборудования выберите поколение оборудования
Gen 2 (GPT, UEFI). -
Чтобы включить оптимизацию образа для развертывания, раскройте секцию Дополнительно и включите опцию Оптимизация.
-
Нажмите кнопку Загрузить.
-
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
-
Посмотрите описание команды Yandex Cloud CLI для создания образа:
yc compute image create --help -
Чтобы создать по ссылке новый образ с закреплением за ним поколения оборудования
Gen 2, выполните команду:yc compute image create \ --name <имя_образа> \ --source-uri "<URL_образа>" \ --hardware-generation-id generation2 \ --pooledГде:
-
--name— имя, которое будет присвоено образу. Требования к имени:- длина — от 2 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
--source-uri— ссылка на образ, полученная в Object Storage. -
--pooled— параметр, позволяющий включить оптимизацию образа для развертывания. Необязательный параметр. По умолчанию оптимизация отключена.
Результат:
done (12s) id: fd86a13e6ro9******** folder_id: b1gt6g8ht345******** created_at: "2025-12-05T16:26:46Z" name: my-own-gen2-image storage_size: "1891631104" min_disk_size: "1891631104" status: READY os: type: LINUX hardware_generation: generation2_features: {} -
Подробнее о команде yc compute image create читайте в справочнике CLI.
Terraform
Terraform распространяется под лицензией Business Source License
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
Чтобы создать образ:
-
Опишите в конфигурационном файле параметры ресурса
yandex_compute_image.Пример структуры конфигурационного файла:
resource "yandex_compute_image" "image-1" { name = "<имя_образа>" source_url = "<ссылка_на_образ>" pooled = "true|false" hardware_generation { generation2_features {} } }Где:
-
name— имя, которое будет присвоено образу. Требования к имени:- длина — от 2 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
source_url— ссылка на образ в Object Storage. -
pooled— параметр, позволяющий включить оптимизацию образа для развертывания. Возможные значения:true— оптимизация включена.false— оптимизация выключена.
Необязательный параметр. По умолчанию оптимизация выключена.
Подробную информацию о параметрах ресурса
yandex_compute_imageсм. в документации провайдера Terraform. -
-
Создайте ресурсы:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validateЕсли конфигурация является корректной, появится сообщение:
Success! The configuration is valid. -
Выполните команду:
terraform planВ терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply -
Подтвердите изменения: введите в терминале слово
yesи нажмите Enter.
Terraform создаст все требуемые ресурсы. Проверить появление ресурсов можно в консоли управления
или с помощью команды CLI:yc compute image list -
Воспользуйтесь методом REST API create для ресурса Image или вызовом gRPC API ImageService/Create.
Например, чтобы создать образ с закреплением поколения оборудования Gen 2 с помощью REST API:
-
Установите утилиту cURL
. -
Получите IAM-токен, используемый для аутентификации в API:
- Инструкция для пользователя с аккаунтом на Яндексе.
- Инструкция для сервисного аккаунта.
- Инструкция для федеративного аккаунта.
- Инструкция для локального аккаунта.
-
Для удобства выполнения запроса сохраните полученный IAM-токен в переменную окружения
IAM_TOKEN:export IAM_TOKEN="<содержимое_IAM-токена>" -
Создайте файл с телом запроса на создание образа (например,
body.json) и добавьте в него следующий код:body.json
{ "folderId": "<идентификатор_каталога>", "name": "<имя_образа>", "uri": "<ссылка_на_загруженный_образ>", "pooled": "true|false", "hardwareGeneration": { "generation2Features": {} } }Где:
-
folderId— идентификатор каталога, в котором создается образ. -
name— имя образа. Требования к имени:- длина — от 2 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
uri— ссылка на образ в Object Storage. -
pooled— параметр, позволяющий включить оптимизацию образа для развертывания. Возможные значения:true— оптимизация включена.false— оптимизация выключена.
Необязательный параметр. По умолчанию оптимизация выключена.
-
-
Выполните HTTP-запрос:
curl \ --request POST \ --header "Content-Type: application/json" \ --header "Authorization: Bearer ${IAM_TOKEN}" \ --data '@body.json' \ https://compute.api.yandexcloud.kz/compute/v1/imagesРезультат:
{ "done": false, "metadata": { "@type": "type.googleapis.com/yandex.cloud.compute.v1.CreateImageMetadata", "imageId": "fd8g5p4hllq8********" }, "id": "fd8m1tfm92kr********", "description": "Create image", "createdAt": "2025-12-05T16:41:54.452564354Z", "createdBy": "ajeol2afu1js********", "modifiedAt": "2025-12-05T16:41:54.452564354Z" }
После создания образа вы можете удалить исходный файл из бакета.
Создайте образ диска с закреплением поколения оборудования Gen 2 из другого образа, снимка или диска
По умолчанию при создании образа за ним закрепляется то поколение оборудования, которое закреплено за исходным образом, снимком или диском, на основе которых создается этот образ. При этом вы можете явно задать для образа поколение оборудования, отличное от поколения, закрепленного за исходными образом, снимком или диском.
За публичными образами, доступными для установки на ВМ в Yandex Cloud Marketplace, по умолчанию закреплено поколение оборудования Gen 1.1 или Gen 1.2. В то же время некоторые публичные образы (например, образы с операционной системой Linux Ubuntu 24.04 LTS) поддерживают оборудование поколения Gen 2 с режимом загрузки UEFIGen 2. Другие публичные образы не поддерживают UEFI-загрузку и поэтому создать на их основе виртуальную машину, работающую на оборудовании поколения Gen 2, нельзя.
Примечание
Создать новый образ с закреплением поколения оборудования Gen 2 из публичного образа в Yandex Cloud Marketplace можно только с помощью Yandex Cloud CLI, Terraform или API.
Чтобы создать образ из существующего образа, снимка или диска:
-
В консоли управления выберите каталог, в котором нужно создать образ.
-
Перейдите в сервис Compute Cloud.
-
В зависимости от того, из какого источника вы хотите создать новый образ, на панели слева выберите
Диски и хранилища, Снимки дисков или Образы. -
В зависимости от выбранного типа источника в открывшемся списке в строке с нужным образом, снимком или диском нажмите значок
и выберите Создать образ. В открывшемся окне:-
В поле Имя задайте имя создаваемого образа. Требования к имени:
- длина — от 2 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
(Опционально) В полях Описание и Метки добавьте произвольное описание и метки образа.
-
Разверните секцию Дополнительно и в поле Поколение оборудования выберите
Gen 2 (GPT, UEFI). -
Чтобы включить оптимизацию образа для развертывания, включите опцию Оптимизация.
-
Нажмите кнопку Создать.
-
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Внимание
-
Посмотрите описание команды Yandex Cloud CLI для создания образа:
yc compute image create --help -
Чтобы создать новый образ с закреплением поколения оборудования
Gen 2из существующего образа, снимка или диска, выполните команду:yc compute image create \ --name <имя_образа> \ --source-image-id <идентификатор_образа-источника> \ --source-snapshot-id <идентификатор_снимка-источника> \ --source-disk-id <идентификатор_диска-источника> \ --hardware-generation-id generation2 \ --pooledГде:
-
--name— имя, которое будет присвоено образу. Требования к имени:- длина — от 2 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
Выбор источника для образа:
--source-image-id— идентификатор образа-источника. Вместо идентификатора вы можете передать в команду имя образа-источника в параметре--source-image-name.--source-snapshot-id— идентификатор снимка-источника. Вместо идентификатора вы можете передать в команду имя снимка-источника в параметре--source-snapshot-name.--source-disk-id— идентификатор диска-источника. Вместо идентификатора вы можете передать в команду имя диска-источника в параметре--source-disk-name.
Примечание
Параметры
--source-image-id,--source-image-name,--source-snapshot-id,--source-snapshot-name,--source-disk-idи--source-disk-name— взаимоисключающие. В команде вы можете указать только один из них. -
--pooled— параметр, позволяющий включить оптимизацию образа для развертывания. Необязательный параметр. По умолчанию оптимизация отключена.
Результат:
done (9s) id: fd86kup8c7pa******** folder_id: b1gt6g8ht345******** created_at: "2025-12-05T06:57:09Z" name: my-sample-gen2-image storage_size: "9877585920" min_disk_size: "21474836480" product_ids: - f2ercusam4no******** status: READY os: type: LINUX hardware_generation: generation2_features: {} -
Подробнее о команде yc compute image create читайте в справочнике CLI.
Terraform
Terraform распространяется под лицензией Business Source License
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
-
Опишите в конфигурационном файле параметры ресурса
yandex_compute_image.Пример структуры конфигурационного файла:
resource "yandex_compute_image" "image-1" { name = "<имя_образа>" source_image = "<идентификатор_образа-источника>" source_snapshot = "<идентификатор_снимка-источника>" source_disk = "<идентификатор_диска-источника>" pooled = "true|false" hardware_generation { generation2_features {} } }Внимание
Где:
-
name— имя, которое будет присвоено образу. Требования к имени:- длина — от 2 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
Выбор источника для образа:
source_image— идентификатор образа-источника.source_snapshot— идентификатор снимка-источника.source_disk— идентификатор диска-источника.
Примечание
Параметры
source_image,source_snapshotиsource_disk— взаимоисключающие. В файле конфигурации вы можете указать только один из них. -
pooled— параметр, позволяющий включить оптимизацию образа для развертывания. Возможные значения:true— оптимизация включена.false— оптимизация выключена.
Необязательный параметр. По умолчанию оптимизация выключена.
Подробную информацию о параметрах ресурса
yandex_compute_imageсм. в документации провайдера Terraform.
-
-
Создайте ресурсы:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validateЕсли конфигурация является корректной, появится сообщение:
Success! The configuration is valid. -
Выполните команду:
terraform planВ терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply -
Подтвердите изменения: введите в терминале слово
yesи нажмите Enter.
Terraform создаст все требуемые ресурсы. Проверить появление ресурсов можно в консоли управления
или с помощью команды CLI:yc compute image list -
Воспользуйтесь методом REST API create для ресурса Image или вызовом gRPC API ImageService/Create.
Например, чтобы создать образ с закреплением поколения оборудования Gen 2 с помощью REST API:
-
Установите утилиту cURL
. -
Получите IAM-токен, используемый для аутентификации в API:
- Инструкция для пользователя с аккаунтом на Яндексе.
- Инструкция для сервисного аккаунта.
- Инструкция для федеративного аккаунта.
- Инструкция для локального аккаунта.
-
Для удобства выполнения запроса сохраните полученный IAM-токен в переменную окружения
IAM_TOKEN:export IAM_TOKEN="<содержимое_IAM-токена>" -
Создайте файл с телом запроса на создание образа (например,
body.json) и добавьте в него следующий код:body.json
{ "folderId": "<идентификатор_каталога>", "name": "<имя_образа>", "imageId": "<идентификатор_образа-источника>", "snapshotId": "<идентификатор_снимка-источника>", "diskId": "<идентификатор_диска-источника>", "pooled": "true|false", "hardwareGeneration": { "generation2Features": {} } }Где:
-
folderId— идентификатор каталога, в котором создается образ. -
name— имя образа. Требования к имени:- длина — от 2 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
Внимание
-
Выбор источника для образа:
imageId— идентификатор образа-источника.snapshotId— идентификатор снимка-источника.diskId— идентификатор диска-источника.
Примечание
Поля
imageId,snapshotIdиdiskId— взаимоисключающие. В запросе вы можете указать только одно из них. -
pooled— параметр, позволяющий включить оптимизацию образа для развертывания. Возможные значения:true— оптимизация включена.false— оптимизация выключена.
Необязательный параметр. По умолчанию оптимизация выключена.
-
-
Выполните HTTP-запрос:
curl \ --request POST \ --header "Content-Type: application/json" \ --header "Authorization: Bearer ${IAM_TOKEN}" \ --data '@body.json' \ https://compute.api.yandexcloud.kz/compute/v1/imagesРезультат:
{ "done": false, "metadata": { "@type": "type.googleapis.com/yandex.cloud.compute.v1.CreateImageMetadata", "imageId": "fd8j3jind4ij********" }, "id": "fd8a7eged70b********", "description": "Create image", "createdAt": "2025-12-05T08:51:44.937021154Z", "createdBy": "ajeol2afu1js********", "modifiedAt": "2025-12-05T08:51:44.937021154Z" }
В результате будет создан образ, к которому привязано поколение виртуализированного оборудования Gen 2.
Создайте снимок диска с закреплением поколения оборудования Gen 2
Вы можете создать снимок загрузочного диска имеющейся виртуальной машины, работающей на виртуализированном оборудовании поколения Gen 1.1 или Gen 1.2, с закреплением за этим снимком поколения оборудования Gen 2.
Подготовьте диск к созданию снимка
Снимок диска содержит только те данные, которые были записаны на диск в момент создания снимка. Если диск подключен к работающей виртуальной машине, то кеш приложений и операционной системы не попадет в снимок.
Чтобы обеспечить целостность данных снимка:
-
Остановите все операции записи на диск в приложениях.
-
Запишите кеш операционной системы на диск:
sync -
Заморозьте файловую систему:
sudo fsfreeze --freeze <точка_монтирования>Где
--freeze— параметр для заморозки файловой системы. Вместо<точка_монтирования>укажите каталог, к которому подключена файловая система. Например:/mnt/vdc2. -
Создайте снимок по инструкции ниже.
-
Разморозьте файловую систему:
sudo fsfreeze --unfreeze <точка_монтирования>Где
--unfreeze— параметр для разморозки файловой системы. Вместо<точка_монтирования>укажите каталог, к которому подключена файловая система. Например:/mnt/vdc2.
- Остановите виртуальную машину (см. раздел Остановить).
- Дождитесь, когда статус машины изменится на
STOPPED.
Создайте снимок
Чтобы создать снимок диска с закреплением поколения оборудования Gen 2:
Примечание
Закрепить за снимком поколение, отличное от поколения, которое закреплено за исходным диском, можно только с помощью Yandex Cloud CLI, Terraform и API.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
-
Посмотрите описание команды CLI для создания снимков:
yc compute snapshot create --help -
Создайте снимок в каталоге по умолчанию:
yc compute snapshot create \ --name <имя_снимка> \ --disk-id <идентификатор_диска-источника> \ --hardware-generation-id generation2Где:
-
--name— имя создаваемого снимка. Требования к имени:- длина — от 2 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
--disk-id— идентификатор диска, для которого вы создаете снимок. Вместо идентификатора вы можете передать в команду имя диска в параметре--disk-name.
Результат:
done (18s) id: fd8jnmpan5ff******** folder_id: b1gt6g8ht345******** created_at: "2025-12-05T14:10:15Z" name: my-gen2-snapshot storage_size: "3632267264" disk_size: "21474836480" product_ids: - f2ebiogvi127******** status: READY source_disk_id: epd89t47vnhd******** hardware_generation: generation2_features: {} -
Подробнее о команде yc compute snapshot create читайте в справочнике CLI.
Terraform
Terraform распространяется под лицензией Business Source License
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
-
Опишите в конфигурационном файле параметры ресурса
yandex_compute_snapshot.Пример структуры конфигурационного файла:
resource "yandex_compute_snapshot" "snapshot-1" { name = "<имя_снимка>" source_disk_id = "<идентификатор_диска>" hardware_generation { generation2_features {} } }Где:
-
name— имя, которое будет присвоено снимку. Требования к имени:- длина — от 2 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
source_disk_id— идентификатор диска, для которого вы создаете снимок.
Подробную информацию о параметрах ресурса
yandex_compute_snapshotсм. в документации провайдера Terraform. -
-
Создайте ресурсы:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validateЕсли конфигурация является корректной, появится сообщение:
Success! The configuration is valid. -
Выполните команду:
terraform planВ терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply -
Подтвердите изменения: введите в терминале слово
yesи нажмите Enter.
Terraform создаст все требуемые ресурсы. Проверить появление ресурсов можно в консоли управления
или с помощью команды CLI:yc compute snapshot list -
Воспользуйтесь методом REST API create для ресурса Snapshot или вызовом gRPC API SnapshotService/Create.
Например, чтобы создать снимок с закреплением поколения оборудования Gen 2 с помощью REST API:
-
Установите утилиту cURL
. -
Получите IAM-токен, используемый для аутентификации в API:
- Инструкция для пользователя с аккаунтом на Яндексе.
- Инструкция для сервисного аккаунта.
- Инструкция для федеративного аккаунта.
- Инструкция для локального аккаунта.
-
Для удобства выполнения запроса сохраните полученный IAM-токен в переменную окружения
IAM_TOKEN:export IAM_TOKEN="<содержимое_IAM-токена>" -
Создайте файл с телом запроса на создание снимка (например,
body.json) и добавьте в него следующий код:body.json
{ "folderId": "<идентификатор_каталога>", "name": "<имя_снимка>", "diskId": "<идентификатор_диска>", "hardwareGeneration": { "generation2Features": {} } }Где:
-
folderId— идентификатор каталога, в котором создается снимок. -
name— имя создаваемого снимка. Требования к имени:- длина — от 2 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
diskId— идентификатор диска, для которого делается снимок.
-
-
Выполните HTTP-запрос:
curl \ --request POST \ --header "Content-Type: application/json" \ --header "Authorization: Bearer ${IAM_TOKEN}" \ --data '@body.json' \ https://compute.api.yandexcloud.kz/compute/v1/snapshotsРезультат:
{ "done": false, "metadata": { "@type": "type.googleapis.com/yandex.cloud.compute.v1.CreateSnapshotMetadata", "snapshotId": "fd8apannhdo9********", "diskId": "epd89t47vnhd********" }, "id": "epd473ndlm58********", "description": "Create snapshot", "createdAt": "2025-12-05T14:43:02.803028670Z", "createdBy": "ajeol2afu1js********", "modifiedAt": "2025-12-05T14:43:02.803028670Z" }
В результате будет создан снимок диска, к которому привязано поколение виртуализированного оборудования Gen 2.
Создайте диск с закреплением поколения оборудования Gen 2
По умолчанию при создании диска за ним закрепляется то поколение оборудования, которое закреплено за исходным образом или снимком, на основе которых создается этот диск. При этом вы можете явно задать для диска поколение оборудования, отличное от поколения, закрепленного за исходными образом или снимком.
Чтобы создать диск с закреплением поколения оборудования Gen 2:
-
В консоли управления выберите каталог, в котором нужно создать образ.
-
Перейдите в сервис Compute Cloud.
-
На панели слева выберите
Диски и хранилища и нажмите кнопку Создать диск. В открывшемся окне:-
В поле Имя задайте имя диска. Требования к имени:
- длина — от 2 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
В поле Зона доступности выберите зону доступности, в которой вы создаете диск.
-
В зависимости от источника, на основе которого вы создаете диск, в поле Наполнение выберите
СнимокилиОбрази в появившемся списке выберите нужный снимок или образ. -
В поле Тип выберите тип диска. Доступные значения:
SSD— быстрый сетевой диск, сетевое блочное хранилище на SSD-накопителе.HDD— стандартный сетевой диск, сетевое блочное хранилище на HDD-накопителе.SSD IO— сетевой диск с повышенной производительностью, обеспечивающий избыточность.Нереплицируемый SSD— сетевой диск с повышенной производительностью без избыточности.
-
В поле Размер задайте нужный размер диска.
-
Разверните секцию Дополнительно и в поле Поколение оборудования выберите
Gen 2 (GPT, UEFI). -
Нажмите кнопку Создать диск.
-
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
-
Посмотрите описание команды Yandex Cloud CLI для создания диска:
yc compute disk create --help -
Создайте диск с закрепленным поколением оборудования
Gen 2в каталоге по умолчанию:yc compute disk create \ --name <имя_диска> \ --zone <зона_доступности> \ --type <тип_диска> \ --size <размер_диска> \ --source-image-id <идентификатор_образа-источника> \ --source-snapshot-id <идентификатор_снимка-источника> \ --hardware-generation-id generation2Где:
-
--name— имя диска. Требования к имени:- длина — от 2 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
--zone— зона доступности, в которой создается диск. -
--type— тип диска. Доступные значения:network-ssd— быстрый сетевой диск, сетевое блочное хранилище на SSD-накопителе.network-hdd— стандартный сетевой диск, сетевое блочное хранилище на HDD-накопителе.network-ssd-nonreplicated— сетевой диск с повышенной производительностью без избыточности.network-ssd-io-m3— сетевой диск с повышенной производительностью, обеспечивающий избыточность.
-
--size— размер диска в гигабайтах. Например, чтобы создать диск размером 32 ГБ, укажите--size 32. -
Выбор источника для диска:
--source-image-id— идентификатор образа, на основе которого создается диск. Вместо идентификатора образа вы можете передать его имя в параметре--source-image-name.--source-snapshot-id— идентификатор снимка, на основе которого создается диск. Вместо идентификатора снимка вы можете передать его имя в параметре--source-snapshot-name.
Примечание
Параметры
--source-image-id,--source-image-name,--source-snapshot-idи--source-snapshot-name— взаимоисключающие. В команде вы можете указать только один из них.
Результат:
done (9s) id: fv45fajiusvq******** folder_id: b1gt6g8ht345******** created_at: "2025-12-04T08:15:45Z" name: ununtu2404-gen2-disk type_id: network-hdd zone_id: kz1-a size: "34359738368" block_size: "4096" product_ids: - f2ebiogvi127******** status: READY source_image_id: fd8bnguet48k******** disk_placement_policy: {} hardware_generation: generation2_features: {} -
Подробнее о команде yc compute disk create читайте в справочнике CLI.
Terraform
Terraform распространяется под лицензией Business Source License
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
-
Опишите в конфигурационном файле параметры ресурса
yandex_compute_disk.Пример структуры конфигурационного файла:
resource "yandex_compute_disk" "my-disk" { name = "<имя_диска>" type = "<тип_диска>" zone = "<зона_доступности>" size = <размер_диска> image_id = "<идентификатор_образа-источника>" snapshot_id = "<идентификатор_снимка-источника>" hardware_generation { generation2_features {} } }Где:
-
name— имя, которое будет присвоено диску. Требования к имени:- длина — от 2 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
type— тип диска. Доступные значения:network-ssd— быстрый сетевой диск, сетевое блочное хранилище на SSD-накопителе.network-hdd— стандартный сетевой диск, сетевое блочное хранилище на HDD-накопителе.network-ssd-nonreplicated— сетевой диск с повышенной производительностью без избыточности.network-ssd-io-m3— сетевой диск с повышенной производительностью, обеспечивающий избыточность.
-
zone— зона доступности, в которой создается диск. -
size— размер диска в ГБ. -
Выбор источника для диска:
image_id— идентификатор образа, на основе которого создается диск.snapshot_id— идентификатор снимка, на основе которого создается диск.
Примечание
Параметры
image_idиsnapshot_id— взаимоисключающие. В файле конфигурации вы можете указать только один из них.Подробную информацию о параметрах ресурса
yandex_compute_diskсм. в документации провайдера Terraform.
-
-
Создайте ресурсы:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validateЕсли конфигурация является корректной, появится сообщение:
Success! The configuration is valid. -
Выполните команду:
terraform planВ терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply -
Подтвердите изменения: введите в терминале слово
yesи нажмите Enter.
Terraform создаст все требуемые ресурсы. Проверить появление ресурсов можно в консоли управления
или с помощью команды CLI:yc compute disk list -
Воспользуйтесь методом REST API create для ресурса Disk или вызовом gRPC API DiskService/Create.
Например, чтобы создать диск с закреплением поколения оборудования Gen 2 с помощью REST API:
-
Установите утилиту cURL
. -
Получите IAM-токен, используемый для аутентификации в API:
- Инструкция для пользователя с аккаунтом на Яндексе.
- Инструкция для сервисного аккаунта.
- Инструкция для федеративного аккаунта.
- Инструкция для локального аккаунта.
-
Для удобства выполнения запроса сохраните полученный IAM-токен в переменную окружения
IAM_TOKEN:export IAM_TOKEN="<содержимое_IAM-токена>" -
Создайте файл с телом запроса на создание диска (например,
body.json) и добавьте в него следующий код:body.json
{ "folderId": "<идентификатор_каталога>", "name": "<имя_диска>", "typeId": "<тип_диска>", "zoneId": "<зона_доступности>", "size": "<размер_диска_в_байтах>", "imageId": "<идентификатор_образа-источника>", "snapshotId": "<идентификатор_снимка-источника>", "hardwareGeneration": { "generation2Features": {} } }Где:
-
folderId— идентификатор каталога, в котором создается диск. -
name— имя диска. Требования к имени:- длина — от 2 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
typeId— тип диска. Доступные значения:network-ssd— быстрый сетевой диск, сетевое блочное хранилище на SSD-накопителе.network-hdd— стандартный сетевой диск, сетевое блочное хранилище на HDD-накопителе.network-ssd-nonreplicated— сетевой диск с повышенной производительностью без избыточности.network-ssd-io-m3— сетевой диск с повышенной производительностью, обеспечивающий избыточность.
-
zoneId— зона доступности, в которой создается диск. -
size— размер диска в байтах. -
Выбор источника для диска:
imageId— идентификатор образа, на основе которого создается диск.snapshotId— идентификатор снимка, на основе которого создается диск.
Примечание
Поля
imageIdиsnapshotId— взаимоисключающие. В запросе вы можете указать только одно из них.
-
-
Выполните HTTP-запрос:
curl \ --request POST \ --header "Content-Type: application/json" \ --header "Authorization: Bearer ${IAM_TOKEN}" \ --data '@body.json' \ https://compute.api.yandexcloud.kz/compute/v1/disksРезультат:
{ "done": false, "metadata": { "@type": "type.googleapis.com/yandex.cloud.compute.v1.CreateDiskMetadata", "diskId": "fv4lmsdol4fi********" }, "id": "fv4pt28gishg********", "description": "Create disk", "createdAt": "2025-12-04T09:19:00.743099068Z", "createdBy": "ajeol2afu1js********", "modifiedAt": "2025-12-04T09:19:00.743099068Z" }
В результате будет создан диск, к которому привязано поколение виртуализированного оборудования Gen 2.
Создайте виртуальную машину, работающую на оборудовании поколения Gen 2
Примечание
Прежде чем создавать ВМ, подготовьте пару ключей (открытый и закрытый) для SSH-доступа на ВМ.
Используйте подготовленный ранее образ, снимок или диск с закрепленным поколением оборудования Gen 2, чтобы создать виртуальную машину, работающую на оборудовании этого поколения:
-
В консоли управления
выберите каталог, в котором будет создана ВМ. -
Перейдите в сервис Compute Cloud.
-
На панели слева выберите
Виртуальные машины и нажмите кнопку Создать виртуальную машину. -
Выберите вариант Расширенная настройка.
-
В блоке Расположение выберите зону доступности, в которой будет находиться ВМ.
Примечание
Если вы создаете ВМ, подключая к ней готовый загрузочный диск, убедитесь, что ваш диск находится в той же зоне доступности, в которой вы собираетесь создать ВМ.
-
В блоке Образ загрузочного диска перейдите на вкладку Пользовательский и нажмите кнопку Выбрать. В открывшемся окне:
-
Чтобы создать ВМ из подготовленного ранее снимка:
-
Убедитесь, что в верхней части экрана выбрана опция
Создать, а в поле Наполнение выбрана опцияСнимок. -
В списке снимков выберите нужный. При необходимости воспользуйтесь фильтром.
-
В поле Имя задайте имя загрузочного диска ВМ. Требования к имени:
- длина — от 2 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
В полях Тип и Размер выберите нужные тип и размер создаваемого диска.
-
(Опционально) В поле Дополнительно включите опцию Удалять вместе с виртуальной машиной, чтобы включить автоудаление создаваемого загрузочного диска вместе с ВМ.
-
Нажмите кнопку Добавить диск.
-
-
Чтобы создать ВМ из подготовленного ранее образа:
-
Убедитесь, что в верхней части экрана выбрана опция
Создать. -
В поле Наполнение выберите опцию
Образ. -
В списке образов выберите нужный. При необходимости воспользуйтесь фильтром.
-
В поле Имя задайте имя загрузочного диска ВМ. Требования к имени:
- длина — от 2 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
В полях Тип и Размер выберите нужные тип и размер создаваемого диска.
-
(Опционально) В поле Дополнительно включите опцию Удалять вместе с виртуальной машиной, чтобы включить автоудаление создаваемого загрузочного диска вместе с ВМ.
-
Нажмите кнопку Добавить диск.
-
-
Чтобы создать ВМ из подготовленного ранее диска:
- В верхней части экрана выберите опцию
Подключить существующий. - В списке дисков выберите нужный. При необходимости воспользуйтесь фильтром.
- (Опционально) В поле Дополнительно включите опцию Удалять вместе с виртуальной машиной, чтобы включить автоудаление создаваемого загрузочного диска вместе с ВМ.
- Нажмите кнопку Добавить диск.
- В верхней части экрана выберите опцию
-
-
В блоке Вычислительные ресурсы выберите одну из готовых конфигураций или создайте свою. Чтобы создать свою конфигурацию:
- Перейдите на вкладку Своя конфигурация.
- Выберите платформу.
- Укажите гарантированную долю и необходимое количество vCPU, а также объем RAM.
- При необходимости включите программно-ускоренную сеть.
- При необходимости сделайте ВМ прерываемой.
-
В блоке Сетевые настройки:
-
В поле Подсеть укажите идентификатор подсети в зоне доступности создаваемой ВМ или выберите облачную сеть из списка.
-
У каждой сети должна быть как минимум одна подсеть. Если подсети нет, создайте ее, выбрав Создать подсеть.
-
Если сети нет, нажмите Создать сеть и создайте ее:
- В открывшемся окне укажите имя сети и выберите каталог, в котором она будет создана.
- (Опционально) Выберите опцию Создать подсети, чтобы автоматически создать подсети во всех зонах доступности.
- Нажмите Создать сеть.
-
-
В поле Публичный IP-адрес выберите способ назначения адреса:
Автоматически— чтобы назначить случайный IP-адрес из пула адресов Yandex Cloud. В этом случае можно включить защиту от DDoS-атак при помощи опции ниже.Список— чтобы выбрать публичный IP-адрес из списка зарезервированных заранее статических адресов. Подробнее читайте в разделе Сделать динамический публичный IP-адрес статическим.Без адреса— чтобы не назначать публичный IP-адрес.
-
Выберите подходящие группы безопасности. Если оставить поле пустым, то виртуальной машине будет автоматически назначена группа безопасности по умолчанию.
-
Разверните блок Дополнительно и в поле Внутренний IPv4 адрес выберите способ назначения внутренних адресов:
Автоматически— чтобы назначить случайный IP-адрес из пула адресов, доступных в выбранной подсети.Вручную— чтобы задать внутренний IP-адрес ВМ вручную.- При необходимости включите опцию Защита от DDoS-атак. Опция доступна, если ранее в настройках публичного адреса вы выбрали автоматический способ назначения адреса.
-
(Опционально) Создайте записи для ВМ в зоне DNS:
- Разверните блок Настройки DNS для внутренних адресов и нажмите Добавить запись.
- Укажите зону, FQDN и время жизни записи. При указании FQDN для зоны доступна опция
Определять автоматически.
Вы можете добавить несколько записей во внутренние зоны DNS. Подробнее см. Интеграция Cloud DNS с Compute Cloud. - Чтобы создать еще одну запись, нажмите кнопку Добавить запись.
Если вы хотите добавить на ВМ дополнительный сетевой интерфейс, нажмите кнопку Добавить сетевой интерфейс и в появившемся блоке настроек нового интерфейса повторите действия, описанные выше в этом шаге. На одну ВМ можно добавить до восьми сетевых интерфейсов.
-
-
В блоке Доступ выберите вариант SSH-ключ и укажите данные для доступа к ВМ:
-
В поле Логин введите имя пользователя.
Внимание
Не используйте логин
rootили другие имена, зарезервированные ОС. Для выполнения операций, требующих прав суперпользователя, используйте командуsudo. -
В поле SSH-ключ выберите SSH-ключ, сохраненный в вашем профиле пользователя организации.
Если в вашем профиле нет сохраненных SSH-ключей или вы хотите добавить новый ключ:
-
Нажмите кнопку Добавить ключ.
-
Задайте имя SSH-ключа.
-
Выберите вариант:
-
Ввести вручную— вставьте содержимое открытого SSH-ключа. Пару SSH-ключей необходимо создать самостоятельно. -
Загрузить из файла— загрузите открытую часть SSH-ключа. Пару SSH-ключей необходимо создать самостоятельно. -
Сгенерировать ключ— автоматическое создание пары SSH-ключей.При добавлении сгенерированного SSH-ключа будет создан и загружен архив с парой ключей. В ОС на базе Linux или macOS распакуйте архив в папку
/home/<имя_пользователя>/.ssh. В ОС Windows распакуйте архив в папкуC:\Users\<имя_пользователя>/.ssh. Дополнительно вводить открытый ключ в консоли управления не требуется.
-
-
Нажмите кнопку Добавить.
SSH-ключ будет добавлен в ваш профиль пользователя организации. Если в организации отключена возможность добавления пользователями SSH-ключей в свои профили, добавленный открытый SSH-ключ будет сохранен только в профиле пользователя внутри создаваемого ресурса.
-
-
-
В блоке Общая информация задайте имя ВМ:
- длина — от 2 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
Примечание
Имя виртуальной машины используется для генерации внутреннего FQDN единожды — при создании ВМ. Если для вас важен внутренний FQDN, учитывайте это и задавайте нужное имя ВМ при создании.
-
Нажмите кнопку Создать ВМ.
-
Посмотрите описание команды CLI для создания ВМ:
yc compute instance create --help -
Создайте ВМ в каталоге по умолчанию:
yc compute instance create \ --name <имя_ВМ> \ --zone <зона_доступности_ВМ> \ --network-interface subnet-id=<идентификатор_подсети>,nat-ip-version=ipv4 \ --create-boot-disk name=<имя_диска>,type=<тип_диска>,size=<размер_диска>,image-id=<идентификатор_образа>,snapshot-id=<идентификатор_снимка>,auto-delete=true \ --use-boot-disk disk-id=<идентификатор_существующего_диска>,auto-delete=true \ --ssh-key "<путь_к_публичному_SSH-ключу>"Где:
-
--name— имя ВМ. Требования к имени:- длина — от 2 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
Примечание
Имя виртуальной машины используется для генерации внутреннего FQDN единожды — при создании ВМ. Если для вас важен внутренний FQDN, учитывайте это и задавайте нужное имя ВМ при создании.
-
--zone— зона доступности, в которой создается ВМ.Зона доступности ВМ должна соответствовать зоне доступности используемой подсети.
При создании ВМ с использованием подготовленного заранее загрузочного диска зона доступности ВМ должна соответствовать зоне доступности этого диска.
-
--network-interface— настройки сетевого интерфейса ВМ:subnet-id— идентификатор подсети.nat-ip-version=ipv4– публичный IP-адрес. Чтобы создать ВМ без публичного IP-адреса, исключите параметр.
Если вы хотите добавить на ВМ несколько сетевых интерфейсов, задайте параметр
--network-interfaceнеобходимое количество раз. На одну ВМ можно добавить до восьми сетевых интерфейсов. -
Настройки загрузочного диска виртуальной машины:
Примечание
Параметры
--create-boot-diskи--use-boot-disk— взаимоисключающие. Вы можете использовать только один из них.-
--create-boot-disk— параметр, позволяющий создать для ВМ новый загрузочный диск на основе образа или снимка:-
name— имя создаваемого диска. Требования к имени:- длина — от 2 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
type— тип создаваемого диска. Доступные значения:network-ssd— быстрый сетевой диск, сетевое блочное хранилище на SSD-накопителе.network-hdd— стандартный сетевой диск, сетевое блочное хранилище на HDD-накопителе.network-ssd-nonreplicated— сетевой диск с повышенной производительностью без избыточности.network-ssd-io-m3— сетевой диск с повышенной производительностью, обеспечивающий избыточность.
-
size— размер диска в гигабайтах. -
Выбор источника для создания загрузочного диска:
-
image-id— идентификатор подготовленного ранее образа, на основе которого будет создан загрузочный диск ВМ. -
snapshot-id— идентификатор подготовленного ранее снимка, на основе которого будет создан загрузочный диск ВМ.Примечание
Ключи
image-idиsnapshot-id— взаимоисключающие. Вы можете использовать только один из них.
-
-
auto-delete— настройка автоудаления загрузочного диска вместе с ВМ. См. Автоудаление дисков.
-
-
--use-boot-disk— параметр, позволяющий использовать в ВМ существующий загрузочный диск, подготовленный ранее:disk-id— идентификатор существующего загрузочного диска.auto-delete— настройка автоудаления загрузочного диска вместе с ВМ. См. Автоудаление дисков.
-
-
--ssh-key— путь к файлу с публичным SSH-ключом. Для этого ключа на ВМ будет автоматически создан пользовательyc-user.
Результат:
done (19s) id: fv4l7qqpi4e0******** folder_id: b1gt6g8ht345******** created_at: "2025-12-05T18:23:55Z" name: my-first-gen2-vm zone_id: kz1-a platform_id: standard-v2 resources: memory: "2147483648" cores: "2" core_fraction: "100" status: RUNNING metadata_options: gce_http_endpoint: ENABLED aws_v1_http_endpoint: ENABLED gce_http_token: ENABLED aws_v1_http_token: DISABLED boot_disk: mode: READ_WRITE device_name: fv4h89mv71cb******** auto_delete: true disk_id: fv4h89mv71cb******** network_interfaces: - index: "0" mac_address: d0:0d:15:3e:b5:99 subnet_id: fl8dmq91iruu******** primary_v4_address: address: 192.168.3.3 one_to_one_nat: address: 158.160.***.*** ip_version: IPV4 serial_port_settings: ssh_authorization: OS_LOGIN gpu_settings: {} fqdn: fv4l7qqpi4e0********.auto.internal scheduling_policy: {} network_settings: type: STANDARD placement_policy: {} hardware_generation: generation2_features: {} application: {} -
-
Опишите в конфигурационном файле параметры ресурсов, которые необходимо создать:
resource "yandex_compute_disk" "boot-disk" { name = "<имя_диска>" type = "<тип_диска>" zone = "<зона_доступности>" size = "<размер_диска>" image_id = "<идентификатор_образа-источника>" snapshot_id = "<идентификатор_снимка-источника>" } resource "yandex_compute_instance" "vm-1" { name = "<имя_вм>" platform_id = "standard-v3" zone = "<зона_доступности>" resources { cores = "<количество_ядер_vCPU>" memory = "<объем_RAM_ГБ>" } boot_disk { auto_delete = true|false disk_id = yandex_compute_disk.boot-disk.id } network_interface { subnet_id = "<идентификатор_подсети>" nat = true } metadata = { ssh-keys = "<имя_пользователя>:<содержимое_SSH-ключа>" } }Где:
-
yandex_compute_disk— описание загрузочного диска:Примечание
Используйте ресурс
yandex_compute_disk, если для ВМ вы создаете новый загрузочный диск из подготовленных ранее образа или снимка.Если в новой ВМ вы будете использовать существующий загрузочный диск, подготовленный ранее, укажите идентификатор этого диска в параметре
boot_disk.disk_idресурсаyandex_compute_instance, не создавая нового ресурсаyandex_compute_disk.-
name— имя создаваемого диска. Требования к имени:- длина — от 2 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
type— тип создаваемого диска. Доступные значения:network-ssd— быстрый сетевой диск, сетевое блочное хранилище на SSD-накопителе.network-hdd— стандартный сетевой диск, сетевое блочное хранилище на HDD-накопителе.network-ssd-nonreplicated— сетевой диск с повышенной производительностью без избыточности.network-ssd-io-m3— сетевой диск с повышенной производительностью, обеспечивающий избыточность.
-
zone— зона доступности, в которой будет находиться диск. -
size— размер диска в ГБ. -
Выбор источника для создания загрузочного диска:
Примечание
Параметры
image_idиsnapshot_id— взаимоисключающие. Вы можете использовать только один из них.image_id— идентификатор подготовленного ранее образа, на основе которого будет создан загрузочный диск ВМ.snapshot_id— идентификатор подготовленного ранее снимка, на основе которого будет создан загрузочный диск ВМ.
Подробную информацию о параметрах ресурса
yandex_compute_diskсм. в документации провайдера Terraform. -
-
yandex_compute_instance— описание ВМ:-
name— имя ВМ. Требования к имени:- длина — от 2 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
platform_id— платформа. -
zone— зона доступности, в которой будет находиться ВМ.Зона доступности виртуальной машины должна совпадать с зоной доступности используемой подсети, а также с зоной доступности загрузочного диска, если вы создаете ВМ из подготовленного заранее диска.
-
resources— количество ядер vCPU и объем RAM, доступные ВМ. Значения должны соответствовать выбранной платформе. -
boot_disk— настройки загрузочного диска:disk_id— идентификатор диска. Если в новой ВМ вы будете использовать существующий загрузочный диск, подготовленный ранее, укажите его идентификатор в этом параметре.auto_delete— настройка автоудаления загрузочного диска вместе с ВМ. См. Автоудаление дисков.
-
network_interface— настройки сетевого интерфейса ВМ:subnet_id— идентификатор подсети в той же зоне доступности, в которой создается виртуальная машина.- Чтобы автоматически назначить ВМ публичный IP-адрес, укажите
nat = true.
Если вы хотите добавить на ВМ несколько сетевых интерфейсов, задайте блок
network_interfaceнеобходимое количество раз. -
metadata— в метаданных необходимо передать имя пользователя и открытый SSH-ключ для доступа на ВМ. Подробнее в разделе Метаданные виртуальной машины.
-
Подробную информацию о параметрах ресурса
yandex_compute_instanceсм. в документации провайдера Terraform. -
-
Создайте ресурсы:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validateЕсли конфигурация является корректной, появится сообщение:
Success! The configuration is valid. -
Выполните команду:
terraform planВ терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply -
Подтвердите изменения: введите в терминале слово
yesи нажмите Enter.
Terraform создаст все требуемые ресурсы. Проверить появление ресурсов можно в консоли управления
или с помощью команды CLI:yc compute instance list -
Воспользуйтесь методом REST API create для ресурса Instance или вызовом gRPC API InstanceService/Create.
Например, чтобы создать виртуальную машину с помощью REST API:
-
Установите утилиту cURL
. -
Получите IAM-токен, используемый для аутентификации в API:
- Инструкция для пользователя с аккаунтом на Яндексе.
- Инструкция для сервисного аккаунта.
- Инструкция для федеративного аккаунта.
- Инструкция для локального аккаунта.
-
Для удобства выполнения запроса сохраните полученный IAM-токен в переменную окружения
IAM_TOKEN:export IAM_TOKEN="<содержимое_IAM-токена>" -
Создайте файл с телом запроса на создание виртуальной машины (например,
body.json) и добавьте в него следующий код:body.json
{ "folderId": "<идентификатор_каталога>", "name": "<имя_ВМ>", "zoneId": "<зона_доступности>", "platformId": "standard-v3", "resourcesSpec": { "memory": "<объем_RAM_в_байтах>", "cores": "<количество_ядер_vCPU>" }, "metadata": { "user-data": "#cloud-config\nusers:\n - name: user\n groups: sudo\n shell: /bin/bash\n sudo: 'ALL=(ALL) NOPASSWD:ALL'\n ssh_authorized_keys:\n - ssh-ed25519 AAAAB3N... user@example.com" }, "bootDiskSpec": { "autoDelete": true, "diskSpec": { "size": "<размер_диска_в_байтах>", "imageId": "<идентификатор_образа-источника>", "snapshotId": "<идентификатор_снимка-источника>" }, "diskId": "<идентификатор_диска>" }, "networkInterfaceSpecs": [ { "subnetId": "<идентификатор_подсети>", "primaryV4AddressSpec": { "oneToOneNatSpec": { "ipVersion": "IPV4" } } } ] }Где:
-
folderId— идентификатор каталога, в котором создается виртуальная машина. -
name— имя ВМ. Требования к имени:- длина — от 2 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
zoneId— зона доступности, в которой будет находиться ВМ.Зона доступности виртуальной машины должна совпадать с зоной доступности используемой подсети, а также с зоной доступности загрузочного диска, если вы создаете ВМ из подготовленного ранее диска.
-
platformId— платформа виртуальной машины. -
resourceSpec— количество ядер vCPU и объем RAM, доступные ВМ. Значения должны соответствовать выбранной платформе. -
metadata— в метаданных необходимо передать открытый ключ для SSH-доступа на ВМ. Подробнее в разделе Метаданные виртуальной машины. -
bootDiskSpec— настройки загрузочного диска виртуальной машины:autoDelete— настройка автоудаления загрузочного диска вместе с ВМ. См. Автоудаление дисков.
Примечание
Параметры
diskSpecиdiskId— взаимоисключающие. Вы можете использовать только один из них.-
diskSpec— настройка нового загрузочного диска в случае его создания из подготовленного ранее образа или снимка:-
size— размер создаваемого диска в байтах. -
Выбор источника для создания загрузочного диска:
Примечание
Параметры
imageIdиsnapshotId— взаимоисключающие. Вы можете использовать только один из них.imageId— идентификатор подготовленного ранее образа, на основе которого будет создан загрузочный диск ВМ.snapshotId— идентификатор подготовленного ранее снимка, на основе которого будет создан загрузочный диск ВМ.
-
-
diskId— идентификатор существующего загрузочного диска, подготовленного ранее, в случае его использования для создания ВМ.
-
networkInterfaceSpecs— настройки сетевого интерфейса ВМ:-
subnetId— идентификатор выбранной подсети. Подсеть должна находиться в той же зоне доступности, в которой вы создаете ВМ. -
primaryV4AddressSpec— IP-адрес, который будет присвоен ВМ. Чтобы добавить публичный IP-адрес ВМ, укажите:"primaryV4AddressSpec": { "oneToOneNatSpec": { "ipVersion": "IPV4" } }
Если вы хотите добавить на ВМ несколько сетевых интерфейсов, передайте в
networkInterfaceSpecsмассив с необходимым количеством объектов с настройками сетевых интерфейсов. -
-
-
Выполните HTTP-запрос:
curl \ --request POST \ --header "Content-Type: application/json" \ --header "Authorization: Bearer ${IAM_TOKEN}" \ --data '@body.json' \ https://compute.api.yandexcloud.kz/compute/v1/instancesРезультат:
{ "done": false, "metadata": { "@type": "type.googleapis.com/yandex.cloud.compute.v1.CreateInstanceMetadata", "instanceId": "fv41kcr9qbd8********" }, "id": "fv4tll89q78c********", "description": "Create instance", "createdAt": "2025-12-05T20:37:44.940310692Z", "createdBy": "ajeol2afu1jsk********", "modifiedAt": "2025-12-05T20:37:44.940310692Z" }