Загрузить свой образ диска в Yandex.Cloud
Эта инструкция описывает, как подготовить образ диска, а также загрузить файл с образом в Yandex Object Storage и создать из него образ в сервисе Compute Cloud.
Важно
В Compute Cloud создать образ по ссылке можно только из файла, загруженного в Object Storage.
Подготовьте файл с образом
Поддерживаемые форматы образов: Qcow2, VMDK и VHD.
Для образов загрузочного диска должны выполняться следующие требования:
- ОС на базе Linux.
- Установлены последние обновления ОС.
- Диск смонтирован по UUID, а не по имени.
- Ядро Linux запущено с параметром
console=ttyS0
. - SSH-сервер запускается автоматически при запуске ВМ.
- Сетевой интерфейс получает IP-адрес по DHCP.
- Установлен пакет
cloud-init
, а также драйверыvirtio-net
иvirtio-blk
.
Рекомендации:
-
Образы рекомендуется оптимизировать перед загрузкой с помощью утилиты
qemu-img
, чтобы ускорить импорт:qemu-img convert -p -O qcow2 -o cluster_size=2M <имя вашего файла образа> <имя нового файла образа>
-
Чтобы образ был совместим с GPU, при подготовке файла установите драйверы NVIDIA.
Примечание
Не используйте программы для сжатия или архивирования при подготовке файла с образом.
Загрузите файл образа в Object Storage
Загрузите файл с образом в сервис Yandex Object Storage и получите ссылку на загруженный образ:
- Если у вас еще нет бакета в Object Storage, создайте его.
- Загрузите образ в ваш бакет. В терминах Object Storage загружаемый файл образа будет называться объектом.
- Получите ссылку на загруженный образ. Используйте эту ссылку при создании образа в Compute Cloud.
Создайте образ в Compute Cloud
Создайте новый образ по ссылке, полученной в Object Storage:
-
В консоли управления выберите каталог, в котором нужно создать образ.
-
Выберите сервис Compute Cloud.
-
На странице Виртуальные машины перейдите на вкладку Образы.
-
Нажмите кнопку Загрузить образ.
-
Введите имя образа.
- Длина — от 3 до 63 символов.
- Может содержать строчные буквы латинского алфавита, цифры и дефисы.
- Первый символ — буква. Последний символ — не дефис.
-
Если требуется, добавьте произвольное описание образа.
-
Вставьте ссылку на образ, полученную в Object Storage.
-
Нажмите кнопку Загрузить.
Чтобы создать новый образ по ссылке, воспользуйтесь флагом --source-uri
.
yc compute image create --name <IMAGE-NAME> --source-uri <IMAGE-URL>
где:
<IMAGE-NAME>
— имя, которое будет присвоено образу.<IMAGE-URL>
— ссылка на образ, полученная в 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
, будет использовано минимальное значение.
Чтобы создать новый образ по ссылке, воспользуйтесь методом Create для ресурса Image
. Ссылку на образ передайте в элементе uri
.
Если у вас ещё нет Terraform, установите его и настройте провайдер Yandex.Cloud.
Чтобы создать образ:
-
Опишите в конфигурационном файле параметры ресурса
yandex_compute_image
.Пример структуры конфигурационного файла:
resource "yandex_compute_image" "image-1" { name = "ubuntu-cosmic" os_type = "LINUX" source_url = "<ссылка на образ в Object Storage>" }
Более подробную информацию о ресурсах, которые вы можете создать с помощью Terraform, см. в документации провайдера.
-
Проверьте корректность конфигурационных файлов.
-
В командной строке перейдите в папку, где вы создали конфигурационный файл.
-
Выполните проверку с помощью команды:
terraform plan
Если конфигурация описана верно, в терминале отобразится список создаваемых ресурсов и их параметров. Если в конфигурации есть ошибки, Terraform на них укажет.
-
-
Разверните облачные ресурсы.
-
Если в конфигурации нет ошибок, выполните команду:
terraform apply
-
Подтвердите создание ресурсов.
После этого в указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления.
-
После создания образ перейдет в статус CREATING
. Дождитесь, когда образ перейдет в статус READY
, прежде чем его использовать.
Удалите образ из Object Storage
Если образ был успешно создан, вы можете удалить файл образа из сервиса Object Storage. Также можно удалить бакет, если в нем не осталось объектов.
Создайте виртуальную машину из подготовленного образа
-
Откройте каталог, в котором будет создана виртуальная машина.
-
Нажмите кнопку Создать ресурс.
-
Выберите Виртуальная машина.
-
В поле Имя введите имя виртуальной машины.
- Длина — от 3 до 63 символов.
- Может содержать строчные буквы латинского алфавита, цифры и дефисы.
- Первый символ — буква. Последний символ — не дефис.
Примечание
Имя виртуальной машины используется для генерации имени FQDN единожды — при создании ВМ. Если для вас важно имя FQDN, учитывайте это и задавайте нужное имя ВМ при создании.
-
Выберите зону доступности, в которой будет находиться виртуальная машина.
-
В блоке Диски нажмите Добавить диск.
- В поле Имя введите имя диска.
- Задайте требуемый размер диска.
- В блоке Назначение диска выберите Загрузочный.
- Выберите тип диска: HDD или SSD.
- В блоке Наполнение выберите Образ. Откроется список загруженных вами образов.
- Выберите нужный образ.
- Нажмите кнопку Добавить.
-
В блоке Вычислительные ресурсы:
- Выберите платформу.
- Укажите необходимое количество vCPU и объем RAM.
-
В блоке Сетевые настройки нажмите кнопку Добавить сеть.
-
В открывшемся окне выберите, к какой подсети необходимо подключить виртуальную машину при создании.
-
В поле Публичный адрес выберите:
- Автоматически — чтобы назначить публичный IP-адрес автоматически. Адрес выделяется из пула адресов Yandex.Cloud.
- Список — чтобы выбрать публичный IP-адрес из списка статических адресов. Подробнее читайте в разделе Сделать динамический публичный IP-адрес статическим документации сервиса Virtual Private Cloud.
- Без адреса — чтобы не назначать публичный IP-адрес.
-
Укажите данные для доступа на виртуальную машину:
- В поле Логин введите имя пользователя.
- В поле SSH ключ вставьте содержимое файла открытого ключа.
Пару ключей для подключения по SSH необходимо создать самостоятельно. Для создания ключей используйте сторонние инструменты, например утилитыssh-keygen
в Linux и macOS или PuTTYgen в Windows.
-
Нажмите кнопку Создать ВМ.
Если у вас еще нет интерфейса командной строки Yandex.Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
-
Посмотрите описание команды CLI для создания виртуальной машины:
yc compute instance create --help
-
Получите список образов в каталоге по умолчанию:
yc compute image list +----------------------+-------------------+--------+-------------+--------+ | ID | NAME | FAMILY | PRODUCT IDS | STATUS | +----------------------+-------------------+--------+-------------+--------+ | ... | ... | | | ... | | fd8gkcd3l6ov84aon8s1 | your-test-image | | | READY | | ... | ... | | | ... | +----------------------+-------------------+--------+-------------+--------+
-
Выберите идентификатор (
ID
) или имя (NAME
) нужного образа. -
Создайте виртуальную машину в каталоге по умолчанию:
yc compute instance create \ --name test-vm-from-image \ --zone ru-central1-a \ --create-boot-disk name=disk1,size=5,image-id=fd8gkcd3l6ov84aon8s1 \ --public-ip \ --ssh-key ~/.ssh/id_rsa.pub
Данная команда создаст виртуальную машину с загрузочным диском на 5 ГБ из заранее загруженного образа с именем
test-vm-from-image
.- Длина — от 3 до 63 символов.
- Может содержать строчные буквы латинского алфавита, цифры и дефисы.
- Первый символ — буква. Последний символ — не дефис.
Примечание
Имя виртуальной машины используется для генерации имени FQDN единожды — при создании ВМ. Если для вас важно имя FQDN, учитывайте это и задавайте нужное имя ВМ при создании.
На машине будет создан пользователь
yc-user
с публичным ключом из файла~/.ssh/id_rsa.pub
. Виртуальная машина получит публичный IP-адрес. Чтобы создать виртуальную машину без публичного IP, исключите флаг--public-ip
.
Воспользуйтесь методом Create для ресурса Instance
.
Если у вас ещё нет Terraform, установите его и настройте провайдер Yandex.Cloud.
Чтобы создать виртуальную машину из пользовательского образа:
-
Опишите в конфигурационном файле параметры ресурсов, которые необходимо создать:
Примечание
Если у вас уже есть подходящие ресурсы (облачная сеть и подсеть), описывать их повторно не нужно. Используйте их имена и идентификаторы в соответствующих параметрах.
yandex_compute_instance
— описание виртуальной машины:name
— имя виртуальной машины.platform_id
— платформа.resources
— количество ядер vCPU и объем RAM, доступные виртуальной машине. Значения должны соответствовать выбранной платформе.boot_disk
— настройки загрузочного диска. Укажите идентификатор загруженного образа.network_interface
— настройка сети. Укажите идентификатор выбранной подсети. Чтобы автоматически назначить виртуальной машине публичный IP-адрес, укажитеnat = true
.metadata
— в метаданных необходимо передать открытый ключ для SSH-доступа на виртуальную машину. Подробнее в разделе Метаданные виртуальной машины.
yandex_vpc_network
— описание облачной сети.yandex_vpc_subnet
— описание подсети, к которой будет подключена виртуальная машина.
Пример структуры конфигурационного файла:
resource "yandex_compute_instance" "vm-1" { name = "vm-from-image" platform_id = "standard-v2" resources { cores = <количество ядер vCPU> memory = <объем RAM в ГБ> } boot_disk { initialize_params { image_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}" }
Более подробную информацию о ресурсах, которые вы можете создать с помощью Terraform, см. в документации провайдера.
-
Проверьте корректность конфигурационных файлов.
-
В командной строке перейдите в папку, где вы создали конфигурационный файл.
-
Выполните проверку с помощью команды:
terraform plan
Если конфигурация описана верно, в терминале отобразится список создаваемых ресурсов и их параметров. Если в конфигурации есть ошибки, Terraform на них укажет.
-
-
Разверните облачные ресурсы.
-
Если в конфигурации нет ошибок, выполните команду:
terraform apply
-
Подтвердите создание ресурсов.
После этого в указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления.
-
О стоимости использования Object Storage читайте в разделе Правила тарификации для Object Storage.