Product SiteDocumentation Site

Глава 31. Шаблоны ВМ

31.1. Контекстуализация ВМ
31.2. Подготовка шаблонов для конечных пользователей
31.3. Запланированные действия
31.4. Создание ВМ из шаблонов
31.5. Управление шаблонами
В 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.