Skip to content

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

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

Примечание

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

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

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

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

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

Примечание

В этом руководстве в качестве примера используется образ 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. Загрузите файл с правилами в образ:

3. Настройте утилиту AWS CLI

Для загрузки образа в облако установите утилиту 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.

4. Загрузите образ в бакет

Сначала образ нужно загрузить в бакет Object Storage, после чего — из бакета в каталог образов Compute.

  1. Создайте бакет Object Storage, в который будете загружать образ. В этом руководстве для примера используется имя бакета test-bucket:

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

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

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

    Дождитесь окончания загрузки.

5. Добавьте образ в каталог образов Compute

Образ jammy-server-cloudimg-amd64 сейчас загружен в бакет в виде файла. Чтобы использовать образ в качестве источника при создании новых ВМ, добавьте его в каталог образов Compute.

Добавить образ можно двумя способами:

  • С помощью утилит AWS CLI и MWS CLI. При добавлении образа для него генерируется presigned URL — временная ссылка, которая предоставляет ограниченный доступ к образу без необходимости настраивать политики доступа бакета.
  • С помощью веб-консоли и настройки политики доступа бакета.

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