В OpenNebula ВМ создаются на основе шаблонов ВМ — описаний конфигурации, которые можно многократно использовать для развёртывания экземпляров. Администраторы и пользователи могут регистрировать шаблоны в системе, делиться ими и настраивать под свои задачи.
Основные компоненты шаблона ВМ:
объём оперативной памяти и количество CPU;
сетевые интерфейсы, подключённые к виртуальным сетям;
диски (образы ОС, данных, swap);
дополнительные атрибуты: графика (VNC/SPICE), порядок загрузки, контекстуализация, запланированные действия и др.
Пример шаблона ВМ:
NAME = "test-vm"
CPU = 1
VCPU = 1
MEMORY = 1024
DISK = [
IMAGE = "SL",
IMAGE_UNAME = "oneadmin"
]
DISK = [
TYPE = "swap",
SIZE = "1024"
]
NIC = [
NETWORK = "VirtNetwork",
NETWORK_UNAME = "oneadmin"
]
NIC = [
NETWORK = "Private",
NAME = "private_net"
]
GRAPHICS = [
TYPE = "vnc",
LISTEN = "0.0.0.0"
]
OS = [
BOOT = "disk0"
]
Все строковые значения должны быть заключены в кавычки.
Простые шаблоны можно создать без использования файла, непосредственно из командной строки:
$ onetemplate create \
--name test-vm \
--cpu 1 \
--vcpu 1 \
--memory 1024 \
--disk "SL" \
--nic VirtNetwork
Полный список параметров для команды можно получить, выполнив:
$ onetemplate create -h
Рекомендации для шаблонов конечных пользователей:
Образы, используемые в шаблонах для конечных пользователей, не должны быть постоянными (persistent).
Постоянный образ может использоваться только одной ВМ одновременно, и следующий пользователь получит систему с изменениями предыдущего.
Если пользователям требуется постоянное хранилище, рекомендуется использовать функцию создания постоянного экземпляра.
Пользователи могут выбирать сетевые интерфейсы при запуске ВМ. Шаблоны могут содержать сетевые адаптеры по умолчанию, которые пользователь при необходимости может удалить или заменить.
При добавлении сетевых интерфейсов рекомендуется указывать модель адаптера по умолчанию (например, virtio для KVM). Это можно сделать с помощью атрибута NIC_DEFAULT, через мастер создания шаблонов или глобально — в конфигурации драйвера гипервизора.
31.1. Контекстуализация ВМ
Контекстуализация позволяет передавать данные ВМ при её запуске, включая:
сетевые настройки (IP-адрес, шлюз, DNS);
SSH-ключи;
пользовательские переменные (например, пароли, названия сайтов);
скрипты инициализации.
Данные указываются в разделе CONTEXT шаблона и обрабатываются агентом контекстуализации внутри гостевой ОС.
Пример контекстуализации:
CONTEXT = [
NETWORK = "YES",
SSH_PUBLIC_KEY = "$USER[SSH_PUBLIC_KEY]",
BLOG_TITLE = "$BLOG_TITLE",
MYSQL_PASSWORD = "$MYSQL_PASSWORD"
]
USER_INPUTS = [
BLOG_TITLE = "M|text|Blog Title",
MYSQL_PASSWORD = "M|password|MySQL Password"
]
В гостевой ОС должен быть установлен пакет opennebula-context.