Создание образов и шаблонов OpenNebula

Создание образов и шаблонов OpenNebula

Roman Bogachev VMware Specialist | Drone Pilot | Traveler

Создание шаблонов и образов для платформы организации управления cloud-инфраструктурой и виртуальными окружениями OpenNebula

Шаг 1. Загружаем образ

Переходим в Virtual Resources -> Images и создаем новый диск.
Выбираем тип CDROM, и загружаем образ.

Ждем загрузки образа

Шаг 2. Создаем диск

Переходим в Virtual Resources -> Images и создаем новый диск.

Создадим пустой диск для будущей системы. Поскольку виртуальные машины будут работать в инстансах, то для всех будет использоваться один образ.
Выбираем тип DATABLOCK, ставим галочку Persistent, и Empty Datablock.
Устанавливаем раздел выбранного блока в Mb, например 20Gb - 20000, префикс sd, а также тип и драйвер qcow2.

Шаг 3. Создаем шаблон

Переходим в Virtual Resources -> Templates и создаем новый шаблон.

Пункт 1. General

Выбираем параметры процессора, оперативной памяти, а также предпочитаемый гипервизор.

Пункт 2. Storage

Добавляем диск и выбираем образ с операционной системой.
Установим режим Read Only.

Добавляем второй диск и выбираем созданный пустой диск 20Gb для него, как есть.

Пункт 3. Network

Выбираем сеть.

Пункт 4. OS Booting

В меню Boot выбираем загрузку с CDROM.
В меню Features включим параметр ACPI.

Пункт 5. Input/Output

Включим VNC. По умолчанию оставим параметры как предложено.

Пункт 6. Context

Включим параметры сети Add Network contextualization, а также авторизацию по RSA-ключам.
Внимание! Используя ключ в шаблоне, авторизация по нему будет доступна на всех виртуальных шаблонах, которые будут созданы из этого шаблона.

Пункт 7. Scheduling

Выбираем хост, на котором будет размещаться виртуальное окружение.

Шаг 3. Установка ОС

Инициализируем установку из созданного шаблона, для этого переходим в Virtual Resources -> Templates -> Instantiate, выбираем наш шаблон и создаем VM.

После создания, переходим в Virtual Resources -> Virtual Machines, выбираем наш сервер и подключаемся к VNC.

Произведем установку системы вручную

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

Переходим в Virtual Resources -> Images и изменим тип нашего блочного устройства с Datablock на OS.

Шаг 4. Подготовка шаблона под VM

Создаем новый шаблон, в параметрах Storage выбираем диск с прошлого шага. Остальные настройки установим по собственному усмотрению. Создаем новую виртуальную машину из этого шаблона и загружаемся в систему.

Шаг 5. Контекстуализация

Подключаемся по VNC к виртуальной машине и настраиваем сеть.

Основные параметры у нас готовы из базовой контекстуализации.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
USER TEMPLATE                                                                   
HYPERVISOR="kvm"
LOGO="images/logos/centos.png"
SCHED_REQUIREMENTS="ID=\"0\""
SUNSTONE_CAPACITY_SELECT="YES"
SUNSTONE_NETWORK_SELECT="YES"

VIRTUAL MACHINE TEMPLATE
AUTOMATIC_REQUIREMENTS="!(PUBLIC_CLOUD = YES)"
CONTEXT=[
DISK_ID="2",
ETH0_DNS="XX.XX.XX.XX",
ETH0_GATEWAY="YY.YY.YY.YY",
ETH0_IP="ZZ.ZZ.ZZ.ZZ",
ETH0_MAC="02:43:20:4F:3F:24",
ETH0_MASK="255.255.255.255",
NETWORK="YES",
TARGET="hdb" ]
CPU="0.25"
FEATURES=[
ACPI="yes" ]
GRAPHICS=[
LISTEN="0.0.0.0",
PORT="5922",
TYPE="VNC" ]
MEMORY="1024"
OS=[
BOOT="cdrom" ]
TEMPLATE_ID="13"
VCPU="2"
VMID="22"

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

1
rpm -Uvh https://github.com/OpenNebula/addon-context-linux/releases/download/v4.10.0/one-context_4.10.0.rpm

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

Например:

  • Отключить IPV6;
  • Установить обновление;
  • Установить необходимые пакеты для работы;
  • Установка ПО (Wordpress, Joomla, Redmine, GitLab и тд);

После завершения установки необходимо очистить и сделать нетронутой нашу виртуальную машину (если планируется использовать образы публично).
Для приватного использования можно оставить все как есть. (Скрипт очистки есть на гх. Ссылка в конце статьи)

1
2
3
4
5
6
7
8
9
10
11
12
# yum clean all
# logrotate –f /etc/logrotate.conf
# rm –f /var/log/-???????? /var/log/.gz
# cat /dev/null > /var/log/audit/audit.log
# cat /dev/null > /var/log/wtmp
# rm -f /etc/udev/rules.d/70*
# sed -i ‘/^(HWADDR|UUID)=/d’ /etc/sysconfig/network-scripts/ifcfg-eth0
# rm –rf /tmp/*
# rm –rf /var/tmp/*
# rm –f /etc/ssh/key
# rm -f ~root/.bash_history
# history -cw

Также нулим все логи и историю других пользователей, если такие создавались.

По окончанию чистки отключаем и удаляем виртуальную машину.

Переходим в Virtual Resources -> Images и переводим диск в состояние Non Persistent или просто убираем галочку с Persistent.

На этом базовое создание образов завершено.
Подробнее о контекстуализации можно прочитать из мануала разработчика в зависимости от установленной версии.

UPD: Скрипт очистки VM и файлы контекстуализации доступны на гх (обновляю по мере улучшения и поиска ошибок)