Перейти к содержимому

Загрузка собственного образа

Вы можете загрузить собственный пользовательский образ в формате qcow2 или raw и использовать его для создания ВМ.

Примечание

Поддерживаются образы только с операционными системами семейства Linux. Рекомендованный формат образов — qcow2. Используйте формат raw только в сценариях, в которых qcow2 не поддерживается. Образы в форматах raw, qcow,vmdk,vhd, vhdx и других форматах, поддерживаемых QEMU, можно конвертировать в qcow2 с помощью утилиты qemu-img.

Для загрузки образа:

  1. Подготовьте окружение для работы с образами.
  2. Подготовьте образ для использования в MWS Cloud.
  3. Установите и настройте утилиту AWS CLI. С ее помощью образ будет загружен с локального компьютера или ВМ в бакет Object Storage.

В результате образ будет доступен в качестве источника при создании новой ВМ.

1. Подготовьте окружение для работы с образами

Заголовок раздела «1. Подготовьте окружение для работы с образами»

В этом руководстве вам понадобится компьютер с ОС Linux.

  1. Установите обновления для уже установленных пакетов:

    bash
    sudo apt update && sudo apt upgrade
  2. Установите систему виртуализации QEMU:

    bash
    sudo apt-get install qemu-system
  3. Установите набор утилит libguestfs-tools. В их составе есть утилита virt-filesystems, которая позволяет просматривать файловые системы внутри виртуальных машин:

    bash
    sudo apt install libguestfs-tools
  4. Добавьте текущего пользователя в группу kvm. Это требуется для корректной работы утилиты virt-filesystems:

    bash
    sudo usermod -aG kvm $USER
  5. Установите утилиту unzip:

    bash
    sudo apt install unzip

2. Подготовьте образ для использования в MWS Cloud Platform

Заголовок раздела «2. Подготовьте образ для использования в MWS Cloud Platform»
Примечание

В этом руководстве в качестве примера используется образ jammy-server-cloudimg-amd64 — официальный образ Ubuntu 22.04 LTS (Jammy Jellyfish) для серверов, оптимизированный под работу в облачных платформах.

  1. Убедитесь, что образ соответствует требованиям для работы в MWS Cloud Platform.

    • Образ имеет формат, который поддерживается в QEMU.
    • Образ поддерживает интерфейс UEFI.
    • Для загрузочного диска используется GPT-разметка с GUID-таблицей разделов.
    • Установлены драйверы virtio-net, virtio-blk, virtio-scsi и virtio-pci. Большинство современных дистрибутивов Linux содержат эти драйверы по умолчанию.
    • В настройках системного файрвола открыт необходимый минимум портов для работы пользовательских приложений, а также порт для доступа по SSH.

    Дополнительно в системе должен быть установлен пакет cloud-init.

  2. Для поддержки символических ссылок на диски (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 naming
    KERNEL=="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"
    # Symlinks
    KERNEL=="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"
  3. Загрузите файл с правилами в образ:

    • 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'

Для загрузки образа в облако установите утилиту AWS CLI:

  1. Создайте сервисный аккаунт с правами storage.bucket.editor. Этот сервисный аккаунт будет использоваться для работы AWS CLI.

  2. Для сервисного аккаунта создайте HMAC-ключ. Сохраните обе части HMAC-ключа — Access key и Secret key. Они понадобятся вам далее.

  3. Скачайте и установите утилиту AWS CLI:

    Примечание

    Поддерживается работа с AWS CLI до версии 2.22.35 включительно.

    bash
    curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64-2.2.35.zip" -o "awscliv.zip" && \
    unzip awscliv.zip && \
    sudo ./aws/install
  4. Настройте AWS CLI:

    bash
    aws configure

    Укажите следующие параметры:

    • AWS Access Key ID — значение Access key из HMAC-ключа (пример — _Ukpnpw3RiCx3iuPhn-t);
    • AWS Secret Access Key — значение Secret key из HMAC-ключа (пример — 3LIK2LbwYqER7oGr3cX4WSC31YN83yZnDgcXyjewX);
    • Default region nameru-central1;
    • Default output formattext.
  1. Создайте бакет Object Storage, в который будете загружать образ. В этом руководстве для примера используется имя бакета test-bucket:

    bash
    aws s3 mb s3://test-bucket --endpoint-url https://storage.mwsapis.ru

    Результат успешного создания бакета:

    bash
    make_bucket: test-bucket
  2. Загрузите образ в бакет:

    • 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
  • Веб-консоль
  1. Создайте сервисный аккаунт с правами storage.image.editor. Этот сервисный аккаунт будет использоваться для работы MWS CLI.

  2. Установите и настройте утилиту MWS CLI:

    3.1. Установите утилиту.

    3.2. Инициализируйте профиль. При инициализации используйте созданный ранее сервисный аккаунт с ролью storage.image.editor.

  3. Сгенерируйте presigned URL для доступа к образу:

    bash
    # для образа в формате qcow2
    aws s3 presign s3://test-bucket/jammy-server-cloudimg-amd64.img --expires-in 60480 --endpoint-url https://storage.mwsapis.ru
    # для образа в формате raw
    aws 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
  4. Добавьте образ в список пользовательских образов Compute::

    bash
    mws compute image create jammy-server-cloudimg-amd64 --external-url <presigned URL для доступа к образу>

Пользовательский образ станет доступен для выбора при создании ВМ.