Управление образами

Создание образа

Если среди готовых образов нет подходящего, загрузите свой собственный образ.

Создание образа в панели управления

Для создания нового образа в панели управления выполните следующие действия:

  1. Перейдите в проекте на вкладку Образы.
  2. Нажмите кнопку Создать образ.
  3. В открывшемся окне в поле Создать выберите источник:
    • из файла — загрузка файла образа с локального компьютера;
    • из URL — общедоступная в интернете ссылка на файл с образом;
    • из диска — создание образа из ранее созданного диска.
  4. Введите название образа.
  5. При выборе в качестве источника файла и URL укажите Формат образа.
  6. При установке галочки Есть минимальные требования к серверу появятся поля для определения минимального количества vCPU и оперативной памяти. Эти ограничения впоследствии будут использоваться панелью управления и API для определения пригодности выбранной конфигурации виртуальной машины для старта на базе этого образа.
  7. Нажмите кнопку Создать.

Созданный образ отобразится в Хранилище образов.

В некоторых регионах Облачной платформы при создании образа из внешнего источника (файл, ссылка) надо указать зону доступности, в которой этот образ будет использоваться первоначально. Благодаря этому создание сетевых дисков и виртуальных машин с локальным диском будет оптимизировано по времени на период фоновой синхронизации образов между хранилищами в зонах доступности региона.

Создание образа с помощью консольных клиентов

Подробно о начале работы через консольные клиенты читайте в статье.

Загрузка образа по ссылке

Использование консольных клиентов для загрузки образов позволяет указать специфические свойства, необходимые для тонкой настройки виртуальной машины.

Чтобы создать образ загрузкой по ссылке введите:

glance image-create-via-import \
--import-method web-download \
--uri <uri image> \
--name <image> \
--disk-format <format> \
--container-format <container> \
--property hw_disk_bus=scsi \
--property hw_scsi_model=virtio-scsi \
--property x_sel_image_owner=Selectel \
--property hw_qemu_guest_agent=yes

Загрузка образа из файла

Для загрузки образа из файла с локальной машины:

openstack image create <image> \
--container-format <container> \
--disk-format <format> \
--file <file> \
--property hw_disk_bus=scsi \
--property hw_scsi_model=virtio-scsi 

Для создания образа в формате ISO введите:

openstack image create ISO_IMAGE \
--file IMAGE.iso \
--disk-format iso \
--container-format bare \
--property hw_disk_bus=scsi \
--property hw_scsi_model=virtio-scsi 

Загрузка большого образа из файла

При загрузке больших образов (более 100 ГБ) используйте curl. Для загрузки большого образа из файла воспользуйтесь последовательностью команд:

  1. Создайте токен для работы с API:

    openstack token issue -c id -f value
  2. Введите команду:

    curl 'https://api.<REGION>.selvpc.ru/image/v2/images' \
    -H 'X-Auth-Token: <TOKEN>' \
    -H 'Content-Type: application/json;charset=utf-8' \
    --data {"name":"IMAGE_NAME","disk_format":"DISK_FORMAT","container_format":"bare"}'

    , где:

    • REGION – это название региона облачной платформы, например, ru-1
    • TOKEN – токен для работы с API, полученный в выводе первой команды;
    • IMAGE_NAME – имя образа;
    • DISK_FORMAT – формат данных загружаемого диска, подробнее про диски и форматы.
  3. Затем введите:

    curl 'https://api.<REGION>.selvpc.ru/image/v2/images/<IMAGE_ID_FROM_FIRST_REQUEST>/file' -X PUT \
    	-H 'Content-Type: application/octet-stream' \
    	-H 'X-Auth-Token: <TOKEN>' \
    	-T <PATH_TO_FILE>

    , где:

    • REGION – это название региона облачной платформы, например, ru-1
    • IMAGE_ID_FROM_FIRST_REQUEST – идентификатор созданного образа из предыдущей команды;
    • TOKEN – токен для работы с API, полученный в выводе первой команды;
    • PATH_TO_FILE – путь к файлу на диске.

Загрузка образа из диска

Для создания консистентного образа из диска нужно отключить диск от виртуальной машины. Менее надёжный, но более удобный вариант – создать временный диск из снапшота основного диска без остановки виртуальной машины.

Создание образа из сетевого диска

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

  1. Остановите сервер:

    openstack server stop <SERVER>
  2. Просмотрите список сетевых дисков:

    openstack volume list
  3. Отключите диск от сервера:

    openstack server remove volume <SERVER> <VOLUME>
  4. Проверьте, что диск перешёл в состояние Available:

    openstack volume list
  5. Создайте образ из сетевого диска:

    openstack image create --volume <VOLUME> <ImageName>

Создание образа из облачного сервера с локальным диском

Для создания образа из облачного сервера (виртуальной машины) с локальным диском введите:

openstack server image create --name <image> <UUID server>

Подробнее об операциях с дисками читайте в статье.

Общий доступ к образу между проектами в одном регионе

Общий доступ к образу системы позволит не загружать его в облако несколько раз и не расходовать средства на его хранение в разных проектах.

Для использования образа из другого проекта выполните следующие действия:

  1. В списке проектов скопируйте UUID проекта-получателя (в формате 07554cec9bd74a58a3798a123cc038e7).
  2. Перейдите в интерфейс управления проектом-отправителем, нажав на название проекта.
  3. В списке образов проекта-отправителя в раскрывающемся вниз аккордеоне образа добавьте доступ для проекта-получателя, вставив ранее скопированный UUID.
  4. Перейдите в проект-получатель на вкладку Образы.
  5. Откройте выпадающее меню нажатием на кнопку с тремя точками и выберите пункт Получить образ из другого проекта.
  6. Поле с UUID автоматически заполнится значением исходного образа.
  7. Образ будет доступен сразу после нажатия кнопки Получить образ.

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

Копирование образа между регионами

Копирование образа между регионами в панели управления

Копирование образа между любыми регионами и проектами осуществляется по следующему порядку:

  1. В списке образов проекта на вкладке Образы скопируйте URL нужного образа. Для этого правой кнопкой мыши нажмите на кнопку скачивания образа и выберите пункт Копировать адрес ссылки.
  2. Перейдите в проект, в который будет осуществляться перенос, и на вкладке Образы выберите нужный регион.
  3. Нажмите кнопку Создать образ.
  4. Укажите параметры для нового образа в соответствии с 3 пунктом инструкции по созданию образа. В качестве источника образа укажите скопированный URL образа.

Образ появится в списке. Данный вид переноса осуществляется физическим копированием данных в целевой проект, поэтому в ресурсах региона должно быть наличие достаточной квоты на Хранилище образов.

Копирование образа между регионами с помощью консольных клиентов

При копировании образов между регионами, свойства образа не сохраняются и их потребуется установить заново. Аналогичная ситуация будет, если сохранить образ диска к себе на компьютер, а далее загрузить из файла, или если загрузить образ через URL.

Для копирования образов между регионами:

  1. Получите свойства образа, который надо скопировать.
  2. Создайте образ из файла с правильными properties.

Просмотрите список образов:

openstack image list

Получите свойства образа, который надо скопировать:

openstack image show <image>

Создайте образ из файла с правильными properties командой:

openstack image create <image> \
--container-format <container> \
--disk-format <format> \
--file <file> \
--property hw_disk_bus=scsi \
--property hw_scsi_model=virtio-scsi 

Для образов на базе Windows обычно надо добавить следующие свойства:

--property hw_disk_bus=scsi \
--property hw_firmware_type=uefi \
--property hw_qemu_guest_agent=yes \
--property hw_scsi_model=virtio-scsi \
--property os_distro=windows2012 \
--property os_type=windows \
--property x_sel_image_agent_type=cloud-init \
--property x_sel_image_os_arch=amd64 \
--property x_sel_image_os_dist=windows \
--property x_sel_image_os_type=windows \
--property x_sel_image_type=master \
--property x_sel_license_name=license_windows_2012_standard

Для образов на базе Linux обычно надо добавить следующие свойства:

--property hw_disk_bus=scsi \
--property hw_qemu_guest_agent=yes \
--property hw_scsi_model=virtio-scsi \
--property os_distro=ubuntu \
--property os_type=linux \
--property x_sel_image_agent_type=cloud-init \
--property x_sel_image_os_arch=amd64 \
--property x_sel_image_os_dist=ubuntu \
--property x_sel_image_os_type=linux \
--property x_sel_image_type=master \

Пример

Команда для добавления свойств к образу, загружаемому по ссылке:

glance image-create-via-import \
--import-method web-download \
--uri <uri> \
--name <image> \
--disk-format raw \
--container-format bare \
--property x_sel_image_os_type=linux

Команда для обновления свойств у уже созданного образа:

 glance image-update <IMAGE_ID> --property <1> --property <2> --property <3>

Рекомендации для установки образа FreeBSD

Обратите внимание! Рекомендуется использовать готовые vm image, для FreeBSD это download.freebsd.org/ftp/snapshots/VM-IMAGES/13.0-CURRENT/amd64/Latest/FreeBSD-13.0-CURRENT-amd64.raw.xz. Перед загрузкой в Glance образ надо распаковать.

Для корректной загрузки образа укажите следующие свойства:

--property hw_disk_bus=scsi \
--property hw_qemu_guest_agent=yes \
--property hw_scsi_model=virtio-scsi \
--property os_distro=freebsd \
--property x_sel_image_agent_type=cloud-init \
--property x_sel_image_os_arch=amd64 \
--property x_sel_image_os_dist=freebsd \
--property x_sel_image_os_type=freebsd \
--property x_sel_image_type=master

Обратите внимание! Рекомендуется установить cloud-init для обеспечения корректной интеграции образа с нашей панелью. Если cloud-init не установлен, то опция x_sel_image_agent_type должна отсутствовать.

Также установите драйвера virtio, подробнее.

Удаление свойств образа

Для удаления свойства образа используйте ключ --remove-property, например:

glance image-update <IMAGE_ID> --remove-property os_distro --remove-property x_sel_image_os_dist

Удаление образа

Обратите внимание! Удаленные образы нельзя восстановить.

Удаление образа в панели управления

Полное удаление образа из хранилища

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

  1. Перейдите в проект, в котором образ был размещен изначально. Примечание: отключение образа, полученного из другого проекта методом общего доступа, не приведет к его физическому удалению. Это можно сделать только из исходного проекта.
  2. Откройте вкладку Образы.
  3. Для удаляемого образа откройте выпадающее меню и выберите пункт Удалить образ.
  4. В открывшемся окне введите название образа для подтверждения действия и нажмите кнопку Удалить.

Образ будет удален и отключен от всех проектов, в которых был организован общий доступ к нему.

Отключение доступа к образу

Для отключения доступа к образу в целевом проекте:

  1. Перейдите в проект, которому был предоставлен доступ к образу.
  2. Откройте вкладку Образы.
  3. Для отключаемого образа откройте меню (⋮) и выберите пункт Отключение образа.

Доступ к образу будет удален из целевого проекта, но сам образ останется доступным в Хранилище образов исходного проекта.

Удаление образа с помощью консольных клиентов

Выведите список приватных образов:

openstack image list --private

Удалите образ командой:

openstack image delete <IMAGE>