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

Материал из ALT Linux Wiki

В данной статье рассмотрены примеры подготовки образов ОС Альт (Image for ALT Virtual Machines) в среде OpenNebula.

Методы добавления образов в облако:

  • создание образов в среде OpenNebula из файла ISO-образа диска;
  • использование шаблона из магазина приложений OpenNebula (marketplace).

Создание образа в среде OpenNebula из файла ISO-образа диска

Управлять образами можно в командной строке (команда oneimage) или в веб-интерфейсе (вкладка «Storage» → «Images»). Для создания образа ОС, необходимо подготовить ВМ и извлечь её диск.

В командной строке

Примечание: Команды выполняются от имени пользователя oneadmin.


1. Загрузить ISO-образ:

$ wget -O /var/tmp/alt-workstation-9.1-x86_64.iso https://mirror.yandex.ru/altlinux/p9/images/workstation/x86_64/alt-workstation-9.1-x86_64.iso
Примечание: ISO-образ должен быть загружен в папку, к которой имеет доступ пользователь oneadmin.


2. Создать два образа в хранилище данных.

Примечание: Список доступных хранилищ можно просмотреть, выполнив команду:
 $ onedatastore list


Создать образ типа CDROM в хранилище данных по умолчанию (ID = 1), для файла ISO-образа, загруженного на предыдущем шаге:

$ oneimage create -d 1 --name "ALT Workstation ISO" --path /var/tmp/alt-workstation-9.1-x86_64.iso --type CDROM
ID: 31

Создать пустой образ диска, на котором будет установлена ​​операционная система (тип образа — DATABLOCK, размер 45 ГБ, драйвер qcow2):

$ oneimage create -d 1 --name "ALT Workstation" --type DATABLOCK --size 45G --persistent --driver qcow2
ID: 33

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

$ oneimage list

3. Создать шаблон ВМ, который использует два созданных образа в качестве локальных дисков.

Создать файл template со следующим содержимым:

NAME = "ALT Workstation"
CONTEXT = [
  NETWORK = "YES",
  SSH_PUBLIC_KEY = "$USER[SSH_PUBLIC_KEY]" ]
CPU = "0.25"
DISK = [
  IMAGE = "ALT Workstation ISO",
  IMAGE_UNAME = "oneadmin" ]
DISK = [
  DEV_PREFIX = "vd",
  IMAGE = "ALT Workstation",
  IMAGE_UNAME = "oneadmin" ]
GRAPHICS = [
  LISTEN = "0.0.0.0",
  TYPE = "SPICE" ]
HYPERVISOR = "kvm"
INPUTS_ORDER = ""
LOGO = "images/logos/alt.png"
MEMORY = "1024"
MEMORY_UNIT_COST = "MB"
NIC = [
  NETWORK = "VirtNetwork",
  NETWORK_UNAME = "oneadmin",
  SECURITY_GROUPS = "0" ]
NIC_DEFAULT = [
  MODEL = "virtio" ]
OS = [
  BOOT = "disk1,disk0" ]
SCHED_REQUIREMENTS = "ID=\"0\""

Создать шаблон:

$ onetemplate create template
ID: 22

Просмотреть список шаблонов:

$ onetemplate list


4. Создать экземпляр шаблона:

$ onetemplate instantiate 22
VM ID: 94

5. Подключиться к созданной ВМ через SPICE и установить ОС.

Примечание: Процесс создания ВМ может занять несколько минут.


Подключиться К ВМ можно как из веб-интерфейса Sunstone, так и используя любой клиент SPICE: spice://192.168.0.190:5994 где 192.168.0.190 адрес хоста с ВМ, а 94 идентификатор ВМ (номер порта 5900 + 94).

OpenNebula. Установка ОС

6. Настроить контекстуализацию на ВМ.

OpenNebula использует метод, называемый контекстуализацией, для отправки информации на виртуальную машину во время загрузки. Контекстуализация позволяет установить или переопределить данные ВМ, имеющие неизвестные значения или значения по умолчанию (имя хоста, IP-адрес, .ssh/authorized_keys).

Для настройки контекстуализации на установленной ОС:

  1. Подключиться к ВМ через SPICE или по ssh.
  2. Установить opennebula-context:
    # apt-get update
    # apt-get install opennebula-context
    
  3. Переключиться на systemd-networkd
    • установить пакет systemd-timesyncd
      # apt-get install systemd-timesyncd
      
    • создать файл автонастройки всех сетевых интерфейсов по DHCP /etc/systemd/network/lan.network со следующим содержимым:
      [Match]
      Name = * 
      
      [Network]
      DHCP = ipv4
      
    • переключиться с etcnet/NetworkManager на systemd-networkd:
      # systemctl disable network NetworkManager && systemctl enable systemd-networkd systemd-timesyncd
      

Перезагрузить систему. После перезагрузки доступ в систему будет возможен по ssh-ключу, ВМ будет назначен IP-адрес, который OpenNebula через механизм IPAM (подсистема IP Address Management) выделит из пула адресов.

7. Произвести необходимую настройку системы для дальнейшего использования (например, при подготовке шаблона ВМ для UDS необходимо установить и настроить openuds-actor, удалённый доступ).

8. Удалить ВМ и изменить тип диска с установленной ОС. После завершения установки и настройки системы следует выключить и удалить ВМ. Диск находится в состоянии Persistent, поэтому все внесенные изменения будут постоянными.

Удаление ВМ в командной строке:

$ onevm terminate 94

Изменить тип блочного устройства с «Datablock» на «OS» и в состояние «Non Persistent»:

$ oneimage chtype 33 OS
$ oneimage nonpersistent 33


9. Образ готов. Далее можно использовать как имеющийся шаблон, так и создать новый на основе образа диска «ALT Workstation».

В веб-интерфейсе

1. Загрузите ISO-образ:

$ wget -O /var/tmp/alt-workstation-9.1-x86_64.iso https://mirror.yandex.ru/altlinux/p9/images/workstation/x86_64/alt-workstation-9.1-x86_64.iso
Примечание: ISO-образ должен быть загружен в папку, к которой имеет доступ пользователь oneadmin.


Примечание: Возможна загрузка файла ISO-образа на сервер из веб-интерфейса, но при больших размерах файлов (>1 ГБ) могут возникать ошибки тайм-аута Ajax и/или отсутствие ответа от сервера (т.к. запрос на загрузку должен оставаться в состоянии pending, пока копирование не будет завершено).


2. Создать два образа в хранилище данных.

Создать образ типа CDROM в хранилище данных по умолчанию, для файла ISO-образа, загруженного на предыдущем шаге. Перейти в раздел «Storage»→«Images» («Образы ВМ»), нажать на «+» → «Create», в открывшемся окне заполнить поле «Name», выбрать тип образа «Readonly CD-ROM» («CD-ROM только для чтения»), хранилище, расположение образа «Path in OpenNebula Server», укажите путь к файлу (.iso), нажать кнопку «Create» («Создать»):

OpenNebula. Образ типа CDROM

Создать пустой образ диска, на котором будет установлена ​​операционная система. В разделе «Images», нажать на «+» → «Create», в открывшемся окне заполнить поле «Name», выбрать в выпадающем списке «Type» значение «Generic storage datablock», в выпадающем списке «This image is persistent» значение Yes», отметить в «Image Location» пункт «Empty disk image», установить размер выбранного блока, например 45GB, а также драйвер qcow2 и нажать кнопку «Create»:

Создать пустой образ диска

3. Создать шаблон ВМ, который использует выше упомянутые два образа в качестве локальных дисков:

  • в левом меню выбрать «Templates» → «VMs»,на загруженной странице нажать кнопку «+» и выбрать пункт «Create»;
  • на вкладке «General» («Общие») необходимо указать параметры процессора, оперативной памяти, а также гипервизор:
    OpenNebula. Создание шаблона ВМ, вкладка «Общие»
  • на вкладе «Storage» («Хранилище») укажите диск с установщиком ОС, далее добавьте новый диск и укажите ранее созданный пустой диск (DATABLOCK), развернуть «Advanced options» и в выпадающем списке «BUS» выбрать «Virtio»:
    OpenNebula. Создание шаблона ВМ, вкладка «Хранилище»
  • на вкладке «Network» («Сеть») в поле «Default hardware model to emulate for all NICs» указать «virtio» и если необходимо выбрать сеть:
    OpenNebula. Создание шаблона ВМ, вкладка «Сеть»
  • на вкладке «OS&CPU» укажите архитектуру устанавливаемой системы, далее установите в качестве первого загрузочного устройства — пустой диск (DATABLOCK), а в качестве второго — CDROM (при такой последовательности загрузочных устройств при пустом диске загрузка произойдёт с CDROM, а в дальнейшем, когда ОС будет уже установлена на диск, загрузка будет осуществляться с него).
    OpenNebula. Создание шаблона ВМ, вкладка «OS&CPU»
  • на вкладке «Input/Output» («Ввод/Вывод») установите отметку на SPICE:
    OpenNebula. Создание шаблона ВМ, вкладка «Ввод/Вывод»
  • на вкладке «Context» («Контекст»), укажите ваш открытый SSH (.pub) для доступа к ВМ по ключу (если оставить поле пустым, будет использована переменная $USER[SSH_PUBLIC_KEY]), включить параметр «Add Network contextualization», а также авторизацию по RSA-ключам:
    OpenNebula. Создание шаблона ВМ, вкладка «Контекст»
  • на вкладке «Scheduling» («Планирование») следует выбрать кластер/хост, на котором будет размещаться виртуальное окружение:
    OpenNebula. Создание шаблона ВМ, вкладка «Планирование»


4. Создать экземпляр шаблона.

Для инициализации установки ОС из созданного шаблона в левом меню следует выбрать пункт «Templates» → «VMs», выбрать шаблон и нажать кнопку «Instantiate»:

OpenNebula. Инициализации установки ОС из созданного шаблона

В открывшемся окне необходимо указать имя ВМ и нажать кнопку «Instantiate»:

OpenNebula. Инициализации установки ОС из созданного шаблона

5. Подключиться к созданной ВМ через SPICE и установить ОС.

Примечание: Процесс создания ВМ может занять несколько минут. Следует дождаться статуса — «RUNNING» («Запущено»).


Подключиться к ВМ можно как из веб-интерфейса (раздел «Instances» → «VMs», нажать на кнопку «SPICE/VNC», находящуюся в крайнем правом столбце напротив соответствующей ВМ):

OpenNebula. Подключение к ВМ через SPICE

Так и используя любой клиент SPICE: spice://192.168.0.190:5994 где 192.168.0.190 адрес хоста с ВМ, а 94 идентификатор ВМ (номер порта 5900 + 94).

OpenNebula. Установка ОС

6. Настроить контекстуализацию на ВМ.

OpenNebula использует метод, называемый контекстуализацией, для отправки информации на виртуальную машину во время загрузки. Контекстуализация позволяет установить или переопределить данные ВМ, имеющие неизвестные значения или значения по умолчанию (имя хоста, IP-адрес, .ssh/authorized_keys).

Для настройки контекстуализации на установленной ОС:

  1. Подключиться к ВМ через SPICE или по ssh.
  2. Установить opennebula-context:
    # apt-get update
    # apt-get install opennebula-context
    
  3. Переключиться на systemd-networkd:
    • установить пакет systemd-timesyncd:
      # apt-get install systemd-timesyncd
      
    • создать файл автонастройки всех сетевых интерфейсов по DHCP /etc/systemd/network/lan.network со следующим содержимым:
      [Match]
      Name = * 
      
      [Network]
      DHCP = ipv4
      
    • переключиться с etcnet/NetworkManager на systemd-networkd:
      # systemctl disable network NetworkManager && systemctl enable systemd-networkd systemd-timesyncd
      

Перезагрузить систему. После перезагрузки доступ в систему будет возможен по ssh-ключу, ВМ будет назначен IP-адрес, который OpenNebula через механизм IPAM (подсистема IP Address Management) выделит из пула адресов.

7. Произвести необходимую настройку системы для дальнейшего использования (например, при подготовке шаблона ВМ для UDS необходимо установить и настроить openuds-actor, удалённый доступ).

8. Удалить ВМ и изменить тип диска с установленной ОС.

После завершения установки и настройки системы следует выключить и удалить ВМ. Диск находится в состоянии Persistent, поэтому все внесенные изменения будут постоянными.

Для удаления ВМ в левом меню следует выбрать пункт «Instances» → «VMs», выбрать ВМ и нажать кнопку «Terminate»:

OpenNebula. Удаление ВМ

Перейти в раздел «Storage»→«Images», выбрать образ с установленной ОС (ALT Workstation). Изменить тип блочного устройства с «Datablock» на «OS» и состояние на «Non Persistent»:

OpenNebula. Изменение типа блочного устройства

9. Образ готов. Далее можно использовать как имеющийся шаблон, так и создать новый на основе образа диска «ALT Workstation».

Использование магазина приложений OpenNebula

Для загрузки образа из магазина необходимо перейти в «Storage» → «MarketPlaces», выбрать «OpenNebula Public» → «Apps» (или сразу выбрать «Apps»). В списке необходимо выбрать подходящий образ диска, гипервизор (KVM). Внимательно изучите описание шаблонов готовых ВМ.