Загрузить свой образ диска в Yandex Cloud
Эта инструкция описывает, как загрузить в Yandex Object Storage файл образа с операционной системой Linux, а также создать из него образ и виртуальную машину в сервисе Compute Cloud. О том, как создать образ с операционной системой Windows, читайте в разделе Подготовка собственных образов с продуктами Microsoft.
Поддерживаются известные системы виртуализации.
Важно
В Compute Cloud создать образ можно только из файла, загруженного в Object Storage. Также вы можете мигрировать ВМ с помощью Hystax Acura.
Подготовьте файл с образом
Для образов загрузочного диска должны выполняться следующие требования:
- Установлены драйверы
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, а не по имени.
- Файловая система не зашифрована.
Инструкции по настройке см. в разделе Подготовить свой образ диска.
Загрузите файл образа в Object Storage
Загрузите файл с образом в сервис Object Storage и получите ссылку на загруженный образ:
- Если у вас еще нет бакета в Object Storage, создайте его с ограниченным доступом.
- Загрузите образ в ваш бакет, например, через консоль управления, с помощью AWS CLI или WinSCP. В терминах Object Storage загружаемый файл образа будет называться объектом.
- Получите ссылку на загруженный образ. Используйте эту ссылку при создании образа в Compute Cloud.
Создайте образ в Compute Cloud
Создайте новый образ по ссылке, полученной в Object Storage:
-
В консоли управления выберите каталог, в котором нужно создать образ.
-
Выберите сервис Compute Cloud.
-
На панели слева выберите
Образы. -
Нажмите кнопку Загрузить образ.
-
Введите имя образа. Требования к имени:
- длина — от 3 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
Если требуется, добавьте произвольное описание образа.
-
Вставьте ссылку на образ, полученную в Object Storage.
-
Чтобы создать оптимизированный образ, включите опцию Оптимизировать для развертывания.
-
Нажмите кнопку Загрузить.
Чтобы создать новый образ по ссылке, воспользуйтесь флагом --source-uri
. Для создания оптимизированного образа используйте флаг --pooled
.
yc compute image create --name <имя_образа> --source-uri <URL_образа> --pooled
Где:
--name
— имя, которое будет присвоено образу.--source-uri
— ссылка на образ, полученная в Object Storage.
Если необходимо, добавьте описание и укажите семейство, к которому относится этот образ:
yc compute image create \
--name ubuntu-cosmic \
--description "Ubuntu Server 18.10 (Cosmic Cuttlefish)" \
--family ubuntu \
--source-uri "https://storage.yandexcloud.net/mybucket/cosmic-server-cloudimg-amd64.vmdk"
Если вы знаете минимальные требования к размеру диска, который будет создан из этого образа, укажите размер в ГБ:
yc compute image create \
--name big-image \
--min-disk-size 20 \
--source-uri "https://storage.yandexcloud.net/mybucket/cosmic-server-cloudimg-amd64.vmdk"
Примечание
Значение min-disk-size
должно быть больше объема исходных данных в образе и больше размера виртуального диска, указанного в образе.
Если указать значение min-disk-size
меньше допустимого, то произойдет ошибка и образ не будет создан. В описании ошибки будет указано минимальное значение в байтах, например Minimal disk size should be greater or equal than 10737418240
.
Если не указать min-disk-size
, будет использовано минимальное значение.
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
Чтобы создать образ:
-
Опишите в конфигурационном файле параметры ресурса
yandex_compute_image
.Пример структуры конфигурационного файла:
resource "yandex_compute_image" "image-1" { name = "ubuntu-cosmic" os_type = "LINUX" source_url = "<ссылка_на_образ>" pooled = "false" }
Где
source_url
— ссылка на образ в Object Storage.Более подробную информацию о ресурсах, которые вы можете создать с помощью Terraform, см. в документации провайдера
. -
Проверьте корректность конфигурационных файлов.
-
В командной строке перейдите в папку, где вы создали конфигурационный файл.
-
Выполните проверку с помощью команды:
terraform plan
Если конфигурация описана верно, в терминале отобразится список создаваемых ресурсов и их параметров. Если в конфигурации есть ошибки, Terraform на них укажет.
-
-
Разверните облачные ресурсы.
-
Выполните команду:
terraform apply
-
Подтвердите создание ресурсов.
После этого в указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
. -
Создайте новый образ с помощью метода REST API create для ресурса Image или вызова gRPC API ImageService/Create. В запросе укажите ссылку на образ.
После создания образ перейдет в статус CREATING
. Дождитесь, когда образ перейдет в статус READY
, прежде чем его использовать.
Удалите образ из Object Storage
Если образ был успешно создан, вы можете удалить файл образа из сервиса Object Storage. Также можно удалить бакет, если в нем не осталось объектов.
Создайте ВМ из подготовленного образа
-
В консоли управления
выберите каталог, в котором будет создана ВМ. -
В списке сервисов выберите Compute Cloud.
-
Справа сверху нажмите Создать виртуальную машину.
-
В блоке Базовые параметры:
-
Введите имя и описание ВМ. Требования к имени:
- длина — от 3 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
Примечание
Имя виртуальной машины используется для генерации внутреннего FQDN единожды — при создании ВМ. Если для вас важен внутренний FQDN, учитывайте это и задавайте нужное имя ВМ при создании.
-
Выберите зону доступности, в которой будет находиться ВМ.
-
-
В блоке Выбор образа/загрузочного диска выберите один из образов:
- Перейдите на вкладку Свой образ и нажмите Выбрать.
- В открывшемся окне перейдите на вкладку Образ.
- Выберите образ из списка и нажмите Применить.
-
(Опционально) Чтобы зашифровать загрузочный диск, в блоке Диски и файловые хранилища задайте для диска параметры шифрования:
- Выберите опцию Зашифрованный диск.
- В поле Ключ KMS выберите ключ, которым вы хотите зашифровать диск. Чтобы создать новый ключ, нажмите кнопку Создать.
- В поле Сервисный аккаунт выберите сервисный аккаунт c ролью
kms.keys.encrypterDecrypter
на указанный ключ. Чтобы создать новый сервисный аккаунт, нажмите кнопку Создать.
Шифрование в Compute Cloud находится на стадии Preview. Чтобы получить доступ к функциональности, на странице создания ресурса в блоке Шифрование нажмите кнопку Запросить доступ или обратитесь в техническую поддержку
.Если деактивировать ключ, которым были зашифрованы диск или снимок, доступ к данным будет приостановлен, пока ключ не будет снова активирован.
Внимание
Если удалить ключ или его версию, которыми были зашифрованы диск или снимок, доступ к данным будет безвозвратно потерян. Подробнее см. Удаление версии ключа.
-
В блоке Диски и файловые хранилища добавьте диск:
-
Нажмите Добавить диск.
-
Введите имя диска.
-
Выберите тип диска.
-
Укажите нужный размер блока.
-
Укажите нужный размер диска.
-
(Опционально) Чтобы зашифровать диск, задайте параметры шифрования.
-
(Опционально) Включите опцию Удалять вместе с виртуальной машиной, если нужно автоматически удалять диск при удалении ВМ, к которой он будет подключен.
-
Выберите наполнение
Образ
. -
Выберите нужный образ.
-
Нажмите Добавить.
-
-
(Опционально) В блоке Диски и файловые хранилища на вкладке Файловые хранилища подключите файловое хранилище:
- Нажмите Подключить файловое хранилище.
- В открывшемся окне выберите файловое хранилище.
- Укажите имя устройства.
- Нажмите Подключить файловое хранилище.
-
В блоке Вычислительные ресурсы:
- Выберите платформу.
- Укажите гарантированную долю и необходимое количество vCPU, а также объем RAM.
- При необходимости сделайте ВМ прерываемой.
- (Опционально) Включите программно-ускоренную сеть.
-
В блоке Сетевые настройки:
-
Укажите идентификатор подсети или выберите облачную сеть из списка.
Если сети нет, нажмите Создать сеть и создайте ее:- В открывшемся окне укажите имя сети и каталог, в котором она будет создана.
- (Опционально) Для автоматического создания подсетей выберите опцию Создать подсети.
- Нажмите Создать.
У каждой сети должна быть как минимум одна подсеть. Если подсети нет, создайте ее, выбрав Создать подсеть.
-
В поле Публичный адрес выберите способ назначения адреса:
Автоматически
— чтобы назначить случайный IP-адрес из пула адресов Yandex Cloud. В этом случае можно включить защиту от DDoS-атак при помощи опции ниже.Список
— чтобы выбрать публичный IP-адрес из списка зарезервированных заранее статических адресов. Подробнее читайте в разделе Сделать динамический публичный IP-адрес статическим.Без адреса
— чтобы не назначать публичный IP-адрес.
-
В поле Внутренний IPv4-адрес выберите способ назначения внутренних адресов:
Автоматически
илиВручную
. -
(Опционально) Создайте записи для ВМ в зоне DNS:
- Разверните блок Настройки DNS для внутренних адресов и нажмите Добавить запись.
- Укажите зону, FQDN и время жизни записи. При указании FQDN для зоны доступна опция
Определять автоматически
.
Вы можете добавить несколько записей во внутренние зоны DNS. Подробнее см. Интеграция Cloud DNS с Compute Cloud. - Чтобы создать еще одну запись, нажмите кнопку Добавить запись.
-
Выберите подходящие группы безопасности.
-
-
(Опционально) Чтобы автоматически создавать резервные копии ВМ с помощью Cloud Backup, в блоке Резервное копирование выберите опцию подключения ВМ к сервису.
Подробнее см. в разделе Подключение виртуальных машин Compute Cloud к Cloud Backup.
-
В блоке Доступ укажите данные для доступа на ВМ:
-
(Опционально) Выберите или создайте сервисный аккаунт. Использование сервисного аккаунта позволяет гибко настраивать права доступа к ресурсам.
-
(Опционально) Включите доступ к ВМ по OS Login. Опция доступна только для образов Linux.
-
В поле Логин введите имя пользователя.
Внимание
Не используйте логин
root
или другие имена, зарезервированные операционной системой. Для выполнения операций, требующих прав суперпользователя, используйте командуsudo
. -
В поле SSH-ключ вставьте содержимое файла открытого ключа.
-
Если требуется, разрешите доступ к серийной консоли.
В публичных образах Linux, предоставляемых Yandex Cloud, возможность подключения по протоколу SSH с использованием логина и пароля по умолчанию отключена.
-
-
(Опционально) В блоке Размещение выберите группу размещения ВМ.
-
Нажмите Создать ВМ.
ВМ появится в списке. При создании ВМ назначаются IP-адрес и имя хоста (FQDN).
За статусом ВМ можно наблюдать в серийной консоли или в выводе последовательного порта.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
-
Посмотрите описание команды CLI для создания ВМ:
yc compute instance create --help
-
Получите список образов в каталоге по умолчанию:
yc compute image list
Результат:
+----------------------+-----------------+--------+-------------+--------+ | ID | NAME | FAMILY | PRODUCT IDS | STATUS | +----------------------+-----------------+--------+-------------+--------+ | ... | ... | | | ... | | fd8gkcd3l6ov******** | your-test-image | | | READY | | ... | ... | | | ... | +----------------------+-----------------+--------+-------------+--------+
-
Выберите идентификатор (
ID
) или имя (NAME
) нужного образа. -
Создайте ВМ в каталоге по умолчанию:
yc compute instance create \ --name <имя_ВМ> \ --zone <зона_доступности> \ --create-boot-disk name=<имя_диска>,size=<размер_диска_ГБ>,image-id=<идентификатор_пользовательского_образа> \ --public-ip \ --ssh-key <путь_к_файлу_открытого_ключа>
Где:
-
--name
— имя виртуальной машины. Требования к имени:- длина — от 3 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
Примечание
Имя виртуальной машины используется для генерации внутреннего FQDN единожды — при создании ВМ. Если для вас важен внутренний FQDN, учитывайте это и задавайте нужное имя ВМ при создании.
-
--zone
— зона доступности, в которой будет находиться ВМ. -
--create-boot-disk
— параметры загрузочного диска:-
name
— имя загрузочного диска. Требования к имени:- длина — от 3 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
size
— размер диска в ГБ. -
image-id
— идентификатор пользовательского образа для ВМ. Укажите идентификатор загруженного образа.
-
-
--public-ip
— флаг для назначения публичного IP-адреса ВМ. Чтобы создать ВМ без публичного IP-адреса, не указывайте этот флаг. -
--ssh-key
— путь к файлу открытого ключа SSH. Имя пользователя по умолчанию для доступа по SSH —yc-user
.
Результат:
id: fhmue131en37******** folder_id: b1g681qpemb4******** created_at: "2024-03-02T12:58:43Z" name: test-vm-from-image zone_id: ru-central1-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: fhmn9n1uhutc******** auto_delete: true disk_id: fhmn9n1uhutc******** network_interfaces: - index: "0" mac_address: d0:0d:1e:70:46:17 subnet_id: e9bb9n0v4h17******** primary_v4_address: address: 10.12*.*.** one_to_one_nat: address: 178.154.***.*** ip_version: IPV4 gpu_settings: {} fqdn: fhmue131en37********.auto.internal scheduling_policy: {} network_settings: type: STANDARD placement_policy: {}
-
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
Чтобы создать ВМ из пользовательского образа:
-
Опишите в конфигурационном файле параметры ресурсов, которые необходимо создать:
resource "yandex_compute_disk" "boot-disk" { name = "<имя_диска>" type = "<тип_диска>" zone = "<зона_доступности>" size = "<размер_диска>" image_id = "<идентификатор_пользовательского_образа>" } resource "yandex_compute_instance" "vm-1" { name = "vm-from-image" allow_stopping_for_update = true platform_id = "standard-v3" zone = "<зона_доступности>" resources { cores = <количество_ядер_vCPU> memory = <объем_RAM_ГБ> } boot_disk { disk_id = yandex_compute_disk.boot-disk.id } network_interface { subnet_id = "${yandex_vpc_subnet.subnet-1.id}" nat = true } metadata = { ssh-keys = "<имя_пользователя>:<содержимое_SSH-ключа>" } } resource "yandex_vpc_network" "network-1" { name = "network1" } resource "yandex_vpc_subnet" "subnet-1" { name = "subnet1" zone = "<зона_доступности>" network_id = "${yandex_vpc_network.network-1.id}" }
Где:
yandex_compute_disk
— описание загрузочного диска:-
name
— имя диска. Требования к имени:- длина — от 3 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
type
— тип создаваемого диска. -
zone
— зона доступности, в которой будет находиться диск. -
size
— размер диска в ГБ. -
image_id
— идентификатор пользовательского образа для ВМ. Укажите идентификатор загруженного образа.
-
yandex_compute_instance
— описание ВМ:-
name
— имя ВМ. Требования к имени:- длина — от 3 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
Примечание
Имя виртуальной машины используется для генерации внутреннего FQDN единожды — при создании ВМ. Если для вас важен внутренний FQDN, учитывайте это и задавайте нужное имя ВМ при создании.
-
allow_stopping_for_update
— разрешение на остановку работы виртуальной машины для внесения изменений. Установите значениеtrue
, если планируете изменять сетевые настройки, вычислительные ресурсы, диски или файловые хранилища ВМ с помощью Terraform. Значение по умолчаниюfalse
. -
platform_id
— платформа. -
zone
— зона доступности, в которой будет находиться ВМ. -
resources
— количество ядер vCPU и объем RAM, доступные ВМ. Значения должны соответствовать выбранной платформе. -
boot_disk
— настройки загрузочного диска. Укажите идентификатор диска. -
network_interface
— настройка сети. Укажите идентификатор выбранной подсети. Чтобы автоматически назначить ВМ публичный IP-адрес, укажитеnat = true
. -
metadata
— в метаданных необходимо передать открытый ключ для SSH-доступа на ВМ. Подробнее в разделе Метаданные виртуальной машины.
-
yandex_vpc_network
— описание облачной сети.yandex_vpc_subnet
— описание подсети, к которой будет подключена ВМ.
Примечание
Если у вас уже есть подходящие ресурсы (облачная сеть и подсеть), описывать их повторно не нужно. Используйте их имена и идентификаторы в соответствующих параметрах.
Более подробную информацию о ресурсах, которые вы можете создать с помощью Terraform, см. в документации провайдера
. -
Создайте ресурсы:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validate
Если конфигурация является корректной, появится сообщение:
Success! The configuration is valid.
-
Выполните команду:
terraform plan
В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply
-
Подтвердите изменения: введите в терминале слово
yes
и нажмите Enter.
После этого в указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
. -
Воспользуйтесь методом REST API create для ресурса Instance или вызовом gRPC API InstanceService/Create.
О стоимости использования Object Storage читайте в разделе Правила тарификации для Object Storage.