Загрузка собственного образа
Вы можете загрузить собственный пользовательский образ в формате qcow2 или raw и использовать его для создания ВМ.
Для загрузки образа:
- Подготовьте окружение для работы с образами.
- Подготовьте образ для использования в MWS Cloud.
- Установите и настройте утилиту AWS CLI. С ее помощью образ будет загружен с локального компьютера или ВМ в бакет Object Storage.
В результате образ будет доступен в качестве источника при создании новой ВМ.
1. Подготовьте окружение для работы с образами
Заголовок раздела «1. Подготовьте окружение для работы с образами»В этом руководстве вам понадобится компьютер с ОС Linux.
Установите обновления для уже установленных пакетов:
bash sudo apt update && sudo apt upgradeУстановите систему виртуализации QEMU:
bash sudo apt-get install qemu-systemУстановите набор утилит
libguestfs-tools. В их составе есть утилитаvirt-filesystems, которая позволяет просматривать файловые системы внутри виртуальных машин:bash sudo apt install libguestfs-toolsДобавьте текущего пользователя в группу
kvm. Это требуется для корректной работы утилитыvirt-filesystems:bash sudo usermod -aG kvm $USERУстановите утилиту
unzip:bash sudo apt install unzip
2. Подготовьте образ для использования в MWS Cloud Platform
Заголовок раздела «2. Подготовьте образ для использования в MWS Cloud Platform»Убедитесь, что образ соответствует требованиям для работы в MWS Cloud Platform.
Для поддержки символических ссылок на диски (Device Name) в образ нужно добавить udev-правила. Для этого создайте на локальном диске файл
80-disk-symlinks.rulesи добавьте в него следующие строки:bash # Name the attached disks as the specified by deviceName.ACTION!="add|change", GOTO="mws_disk_naming_end"SUBSYSTEM!="block", GOTO="mws_disk_naming_end"# SCSI namingKERNEL=="sd*|vd*", IMPORT{program}="scsi_id --export --whitelisted -d $tempnode"# Don't symlink if it's not mws devices. This is a fail-safe against these rules# running outside of MWS Cloud Platform.KERNEL=="sd*|vd*", ENV{ID_VENDOR}!="MWS", GOTO="mws_disk_naming_end"# SymlinksKERNEL=="sd*|vd*", ENV{DEVTYPE}=="disk", SYMLINK+="disk/by-id/$env{ID_SERIAL_SHORT}"KERNEL=="sd*|vd*", ENV{DEVTYPE}=="partition", SYMLINK+="disk/by-id/$env{ID_SERIAL_SHORT}-part%n"LABEL="mws_disk_naming_end"Загрузите файл с правилами в образ:
- qcow2
- raw
bash sudo virt-sysprep -a jammy-server-cloudimg-amd64.img \--upload 80-disk-symlinks.rules:/lib/udev/rules.d/80-disk-symlinks.rules \--run-command 'chown root:root /lib/udev/rules.d/80-disk-symlinks.rules' \--run-command 'chmod 644 /lib/udev/rules.d/80-disk-symlinks.rules'
3. Настройте утилиту AWS CLI
Заголовок раздела «3. Настройте утилиту AWS CLI»Для загрузки образа в облако установите утилиту AWS CLI:
Создайте сервисный аккаунт с правами
storage.bucket.editor. Этот сервисный аккаунт будет использоваться для работы AWS CLI.Для сервисного аккаунта создайте HMAC-ключ. Сохраните обе части HMAC-ключа —
Access keyиSecret key. Они понадобятся вам далее.Скачайте и установите утилиту AWS CLI:
bash curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64-2.2.35.zip" -o "awscliv.zip" && \unzip awscliv.zip && \sudo ./aws/installНастройте AWS CLI:
bash aws configureУкажите следующие параметры:
- AWS Access Key ID — значение
Access keyиз HMAC-ключа (пример —_Ukpnpw3RiCx3iuPhn-t); - AWS Secret Access Key — значение
Secret keyиз HMAC-ключа (пример —3LIK2LbwYqER7oGr3cX4WSC31YN83yZnDgcXyjewX); - Default region name —
ru-central1; - Default output format —
text.
4. Загрузите образ в бакет
Заголовок раздела «4. Загрузите образ в бакет»Создайте бакет Object Storage, в который будете загружать образ. В этом руководстве для примера используется имя бакета
test-bucket:bash aws s3 mb s3://test-bucket --endpoint-url https://storage.mwsapis.ruРезультат успешного создания бакета:
bash make_bucket: test-bucketЗагрузите образ в бакет:
- qcow2
- raw
bash aws s3 cp myimage.qcow2 s3://test-bucket/jammy-server-cloudimg-amd64.qcow2 --endpoint-url https://storage.mwsapis.ruДождитесь окончания загрузки.
5. Добавьте образ в список пользовательских образов Compute
Заголовок раздела «5. Добавьте образ в список пользовательских образов Compute»Образ jammy-server-cloudimg-amd64 сейчас загружен в бакет в виде файла. Чтобы использовать образ в качестве источника при создании новых ВМ, добавьте его в список пользовательских образов Compute.
Добавить образ можно двумя способами:
- С помощью утилит AWS CLI и MWS CLI. При добавлении образа для него генерируется presigned URL — временная ссылка, которая предоставляет ограниченный доступ к образу без необходимости настраивать политики доступа бакета.
- С помощью веб-консоли и настройки политики доступа бакета.
- Утилиты CLI и presigned URL
- Веб-консоль
Создайте сервисный аккаунт с правами
storage.image.editor. Этот сервисный аккаунт будет использоваться для работы MWS CLI.Установите и настройте утилиту MWS CLI:
3.1. Установите утилиту.
3.2. Инициализируйте профиль. При инициализации используйте созданный ранее сервисный аккаунт с ролью
storage.image.editor.Сгенерируйте presigned URL для доступа к образу:
bash # для образа в формате qcow2aws s3 presign s3://test-bucket/jammy-server-cloudimg-amd64.img --expires-in 60480 --endpoint-url https://storage.mwsapis.ru# для образа в формате rawaws s3 presign s3://test-bucket/jammy-server-cloudimg-amd64.raw --expires-in 60480 --endpoint-url https://storage.mwsapis.ruПример успешного выполнения запроса:
bash https://storage.mwsapis.ru/test-bucket/jammy-server-cloudimg-amd64.raw?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=rNw605bp9MIQXFEe-QJF%2F20250812%2Fru-central1%2Fs3%2Faws4_request&X-Amz-Date=20250812T033321Z&X-Amz-Expires=60480&X-Amz-SignedHeaders=host&X-Amz-Signature=3a30dd9402a69b6573cd8f72571faf683eb6fe660b8f4de256dfdfe91e8297b3Добавьте образ в список пользовательских образов Compute::
bash mws compute image create jammy-server-cloudimg-amd64 --external-url <presigned URL для доступа к образу>
Пользовательский образ станет доступен для выбора при создании ВМ.