Загрузить свой образ диска в Yandex Cloud
Эта инструкция описывает, как загрузить в Yandex Object Storage файл образа с операционной системой Linux, а также создать из него образ и виртуальную машину в сервисе Compute Cloud.
Поддерживаются известные системы виртуализации.
Важно
В 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, а не по имени.
- Файловая система не зашифрована.
Поддерживаемые форматы: Qcow2
, VMDK
, RAW
и VHD
.
Инструкции по настройке см. в разделе Подготовить свой образ диска.
Загрузите файл образа в 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.kz/mybucket/cosmic-server-cloudimg-amd64.vmdk"
Если вы знаете минимальные требования к размеру диска, который будет создан из этого образа, укажите размер в ГБ:
yc compute image create \
--name big-image \
--min-disk-size 20 \
--source-uri "https://storage.yandexcloud.kz/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. Вы можете создавать, удалять и управлять ими по отдельности. Ваши действия с диском не влияют на снимок этого диска или на образ, по которому был создан диск. Даже если вы удалите диск или ВМ с диском, снимок диска и образ останутся.
-
В консоли управления
выберите каталог, в котором будет создана ВМ. -
В списке сервисов выберите Compute Cloud.
-
На панели слева выберите
Виртуальные машины. -
Нажмите кнопку Создать виртуальную машину.
-
В блоке Образ загрузочного диска:
- Перейдите на вкладку Пользовательский.
- Нажмите кнопку Выбрать и в открывшемся окне выберите Создать новый.
- В поле Наполнение выберите
Образ
и в списке ниже выберите нужный образ. - (Опционально) В поле Дополнительно включите опцию Удалять вместе с виртуальной машиной, если вы хотите автоматически удалять этот диск при удалении ВМ.
- Нажмите кнопку Добавить диск.
-
В блоке Расположение выберите зону доступности, в которой будет находиться ВМ.
-
Добавьте диск:
- В блоке Диски и файловые хранилища нажмите кнопку Добавить.
- В открывшемся окне выберите Диск →
Создать новый
. - В поле Наполнение выберите
Образ
и в списке ниже выберите нужный образ. - Укажите имя диска.
- Выберите тип диска.
- Задайте нужные размер диска и размер блока.
- (Опционально) В поле Дополнительно включите опцию Удалять вместе с виртуальной машиной, если вы хотите автоматически удалять этот диск при удалении ВМ.
- Нажмите кнопку Добавить диск.
-
(Опционально) Чтобы зашифровать загрузочный или дополнительный диск, в блоке Диски и файловые хранилища справа от имени диска нажмите значок
и задайте параметры шифрования для диска:- Выберите опцию Зашифрованный диск.
- В поле Ключ KMS выберите ключ, которым вы хотите зашифровать диск. Чтобы создать новый ключ, нажмите кнопку Создать новый.
Важно
Задать настройки шифрования можно только при создании диска. Шифрование диска нельзя будет отключить или изменить.
Если деактивировать ключ, которым были зашифрованы диск, снимок или образ, доступ к данным будет приостановлен, пока ключ не будет снова активирован.
Внимание
Если удалить ключ или его версию, которыми были зашифрованы диск, снимок или образ, доступ к данным будет безвозвратно потерян. Подробнее см. Удаление версии ключа.
-
(Опционально) Подключите файловое хранилище:
-
В блоке Диски и файловые хранилища нажмите кнопку Добавить.
-
В открывшемся окне выберите Файловое хранилище и в появившемся списке выберите хранилище, которое требуется подключить.
-
Нажмите кнопку Добавить файловое хранилище.
-
-
-
В блоке Вычислительные ресурсы выберите одну из готовых конфигураций или создайте свою. Чтобы создать свою конфигурацию:
- Перейдите на вкладку Своя конфигурация.
- Выберите платформу.
- Укажите гарантированную долю и необходимое количество vCPU, а также объем RAM.
- При необходимости включите программно-ускоренную сеть.
- При необходимости сделайте ВМ прерываемой.
-
В блоке Сетевые настройки:
-
В поле Подсеть укажите идентификатор подсети в зоне доступности создаваемой ВМ или выберите облачную сеть из списка.
-
У каждой сети должна быть как минимум одна подсеть. Если подсети нет, создайте ее, выбрав Создать подсеть.
-
Если сети нет, нажмите Создать сеть и создайте ее:
- В открывшемся окне укажите имя сети и выберите каталог, в котором она будет создана.
- (Опционально) Выберите опцию Создать подсети, чтобы автоматически создать подсети во всех зонах доступности.
- Нажмите Создать сеть.
-
-
В поле Публичный адрес выберите способ назначения адреса:
Автоматически
— чтобы назначить случайный IP-адрес из пула адресов Yandex Cloud. В этом случае можно включить защиту от DDoS-атак при помощи опции ниже.Список
— чтобы выбрать публичный IP-адрес из списка зарезервированных заранее статических адресов. Подробнее читайте в разделе Сделать динамический публичный IP-адрес статическим.Без адреса
— чтобы не назначать публичный IP-адрес.
-
Выберите подходящие группы безопасности. Если оставить поле пустым, то виртуальной машине будет автоматически назначена группа безопасности по умолчанию.
-
Разверните блок Дополнительно и в поле Внутренний IPv4 адрес выберите способ назначения внутренних адресов:
Автоматически
— чтобы назначить случайный IP-адрес из пула адресов, доступных в выбранной подсети.Вручную
— чтобы задать внутренний IP-адрес ВМ вручную.- При необходимости включите опцию Защита от DDoS-атак. Опция доступна, если ранее в настройках публичного адреса вы выбрали автоматический способ назначения адреса.
-
(Опционально) Создайте записи для ВМ в зоне DNS:
- Разверните блок Настройки DNS для внутренних адресов и нажмите Добавить запись.
- Укажите зону, FQDN и время жизни записи. При указании FQDN для зоны доступна опция
Определять автоматически
.
Вы можете добавить несколько записей во внутренние зоны DNS. Подробнее см. Интеграция Cloud DNS с Compute Cloud. - Чтобы создать еще одну запись, нажмите кнопку Добавить запись.
Если вы хотите добавить на ВМ дополнительный сетевой интерфейс, нажмите кнопку Добавить сетевой интерфейс и в появившемся блоке настроек нового интерфейса повторите действия, описанные выше в этом шаге. На одну ВМ можно добавить до восьми сетевых интерфейсов.
-
-
В блоке Доступ:
-
Выберите Доступ по OS Login, чтобы подключаться к создаваемой ВМ и управлять доступом к ней с помощью OS Login в Yandex Cloud Organization.
Используя OS Login, вы сможете подключаться к ВМ по SSH-ключам и SSH-сертификатам с помощью стандартного SSH-клиента или интерфейса командной строки Yandex Cloud. OS Login позволяет ротировать SSH-ключи, используемые для доступа к ВМ, и является наиболее безопасным вариантом доступа.
-
Если доступ по OS Login вам не подходит, выберите вариант SSH-ключ и укажите данные для доступа к ВМ:
-
В поле Логин введите имя пользователя.
Внимание
Не используйте логин
root
или другие имена, зарезервированные ОС. Для выполнения операций, требующих прав суперпользователя, используйте командуsudo
. -
В поле SSH-ключ выберите SSH-ключ, сохраненный в вашем профиле пользователя организации.
Если в вашем профиле нет сохраненных SSH-ключей или вы хотите добавить новый ключ:
- Нажмите кнопку Добавить ключ.
- Задайте имя SSH-ключа.
- Загрузите или вставьте содержимое открытого SSH-ключа. Пару SSH-ключей для подключения к ВМ по SSH необходимо создать самостоятельно.
- Нажмите кнопку Добавить.
SSH-ключ будет добавлен в ваш профиль пользователя организации.
Если в организации отключена возможность добавления пользователями SSH-ключей в свои профили, добавленный открытый SSH-ключ будет сохранен только в профиле пользователя создаваемой виртуальной машины.
-
Если вы хотите добавить на ВМ одновременно нескольких пользователей с SSH-ключами, задайте данные этих пользователей в блоке Метаданные. С помощью метаданных вы также можете установить дополнительное ПО на ВМ при ее создании.
В публичных образах Linux, предоставляемых Yandex Cloud, возможность подключения по протоколу SSH с использованием логина и пароля по умолчанию отключена.
-
-
В блоке Общая информация задайте имя ВМ:
- длина — от 3 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
Примечание
Имя виртуальной машины используется для генерации внутреннего FQDN единожды — при создании ВМ. Если для вас важен внутренний FQDN, учитывайте это и задавайте нужное имя ВМ при создании.
-
В блоке Дополнительно:
-
(Опционально) Выберите или создайте сервисный аккаунт. Использование сервисного аккаунта позволяет гибко настраивать права доступа к ресурсам.
-
(Опционально) Разрешите доступ к серийной консоли.
-
(Опционально) В блоке Резервное копирование включите опцию Подключить и выберите или создайте политику резервного копирования, чтобы автоматически создавать резервные копии ВМ с помощью сервиса Cloud Backup.
Подробнее см. в разделе Подключение виртуальных машин Compute Cloud и серверов Yandex BareMetal к Cloud Backup.
-
(Опционально) В блоке Мониторинг включите опцию Агент сбора метрик, чтобы настроить поставку метрик в Yandex Monitoring.
-
(Опционально) В блоке Размещение выберите группу размещения ВМ.
-
-
Нажмите кнопку Создать ВМ.
ВМ появится в списке. При создании ВМ назначаются 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 vpc subnet list
Результат:
+----------------------+---------------------------+----------------------+----------------+-------------------+-----------------+ | ID | NAME | NETWORK ID | ROUTE TABLE ID | ZONE | RANGE | +----------------------+---------------------------+----------------------+----------------+-------------------+-----------------+ | e9bnlm18l70a******** | default-ru-central1-a | enpe3m3fa00u******** | | ru-central1-a | [10.128.0.0/24] | +----------------------+---------------------------+----------------------+----------------+-------------------+-----------------+
-
Создайте ВМ в каталоге по умолчанию:
yc compute instance create \ --name <имя_ВМ> \ --zone <зона_доступности> \ --network-interface subnet-name=<имя_подсети>,nat-ip-version=ipv4 \ --create-boot-disk name=<имя_диска>,size=<размер_диска_ГБ>,image-id=<идентификатор_пользовательского_образа> \ --ssh-key <путь_к_файлу_открытого_ключа>
Где:
-
--name
— имя ВМ. Требования к имени:- длина — от 3 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
Примечание
Имя виртуальной машины используется для генерации внутреннего FQDN единожды — при создании ВМ. Если для вас важен внутренний FQDN, учитывайте это и задавайте нужное имя ВМ при создании.
-
--zone
— зона доступности, которая соответствует выбранной подсети. -
--network-interface
— настройки сетевого интерфейса ВМ:subnet-name
— имя выбранной подсети.nat-ip-version=ipv4
– публичный IP-адрес. Чтобы создать ВМ без публичного IP-адреса, исключите параметр.
Если вы хотите добавить на ВМ несколько сетевых интерфейсов, задайте параметр
--network-interface
необходимое количество раз. На одну ВМ можно добавить до восьми сетевых интерфейсов. -
--create-boot-disk
— настройки загрузочного диска ВМ:-
name
— имя загрузочного диска. Требования к имени:- длина — от 3 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
size
— размер диска в ГБ. -
image-id
— идентификатор пользовательского образа для ВМ. Укажите идентификатор загруженного образа.
-
-
--ssh-key
— путь к файлу с публичным SSH-ключом. Для этого ключа на ВМ будет автоматически создан пользовательyc-user
.При создании ВМ из публичного образа Yandex Cloud Marketplace обязательно передавайте в ВМ SSH-ключ, поскольку доступ по протоколу SSH с использованием логина и пароля для таких образов по умолчанию отключен.
Если вы хотите добавить на ВМ одновременно нескольких пользователей с SSH-ключами, задайте данные этих пользователей с помощью параметра
--metadata-from-file
.
-
При создании виртуальной машине назначаются IP-адрес и доменное имя (FQDN).
Результат:
```text
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
.Если вы хотите добавить на ВМ несколько сетевых интерфейсов, задайте блок
network_interface
необходимое количество раз. На одну ВМ можно добавить до восьми сетевых интерфейсов. -
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.