Перейти к содержанию

Создание шаблонов развертывания

Шаблон развертывания описывает состав стенда: какие виртуальные машины из каких образов (шаблонов VM) клонируются, как они соединены сетями и какие настройки получают. Шаблон создаётся в веб-интерфейсе на странице «Создание развертывания» (/deployment/create), а затем на него разворачиваются стенды для пользователей или групп.

Доступ

Доступ к созданию шаблонов дают роли deployment-create или deployment-admin. Для выбора образов при создании также требуется роль image-view (или image-admin). Права применяются при повторном входе: если вы уже были в системе, выйдите и войдите снова.

Обзор страницы

Форма развертывания состоит из четырёх блоков:

  1. Имя стенда — название шаблона, уникальное в системе
  2. Список виртуальных машин — карточки VM, каждая описывает одну создаваемую машину
  3. Политика пользовательских снапшотов — лимиты на снапшоты для пользователей
  4. Список сетей — объявленные сети стенда

Внизу — кнопка «Создать стенд», которая сохраняет шаблон и отправляет его на сервер.

Имя стенда

Название шаблона отображается в списке «Мои развертывания» и в статистике. Оно должно быть уникальным: при совпадении имени сервер вернёт ошибку «Название шаблона занято». Имя также влияет на теги и на отображение в топологии.

Настройка виртуальной машины

Кнопка «Добавить ВМ» добавляет пустую карточку VM. В ней настраиваются:

Поле Назначение и нюансы
Название VM Имя машины в стенде. Используется в топологии и таблице подключений
Клонировать из Образ (шаблон VM), из которого клонируется машина. Выбор из списка доступных образов
Время ожидания после включения (сек) Задержка после включения до следующего развертывания. Удобно, если машина должна прогреться перед запуском остальных
Кол-во ядер Число ядер CPU. По умолчанию — из образа
Кол-во ОЗУ (МБ) Память машины в мегабайтах
Лимит нагрузки CPU Лимит CPU, дробное число (например, 2.5). Ограничивает пиковую нагрузку
Хранилище для копирования Хранилище для full-копии. Пустое значение — Linked Clone на хранилище образа (быстрее, меньше места)
Доступна пользователю Галочка: доступна ли машина пользователю для открытия. Выключенные машины — служебные (например, роутер)
Включить VM при развертывании Включить машину после создания. По умолчанию включено

Cloud-init параметры

Для образов с поддержкой cloud-init доступны поля:

  • Логин пользователя — создаваемый пользователь в машине
  • Пароль пользователя — пароль этого пользователя
  • DNS-резолвер — DNS-сервер (nameserver)
  • SSH ключи — публичные SSH-ключи через перенос строки (sshkeys)

Поля необязательны; при незаполнении используются значения из образа (если заданы). Если образ не поддерживает cloud-init, эти поля игнорируются.

Подключение дополнительных дисков

Блок «Подключение дополнительных дисков» позволяет добавить диски к машине:

  • Номер диска — порядковый номер диска
  • Тип — шина: ide, sata, scsi или virtio
  • Размер диска — например, 10G
  • Целевое хранилище — хранилище Proxmox для диска

Добавленные диски отображаются списком с кнопкой «Удалить».

Подключение сетей

Сети подключаются к каждой машине отдельно. Для новой VM используется блок «Добавление сетей»: выбирается сеть из списка объявленных и тип интерфейса, затем нажимается «Подключить».

Для уже подключённой сети можно изменить:

  • Сеть — имя сети из списка объявленных
  • Номер — номер сетевого устройства (от 0 до 31)
  • Тип — модель интерфейса (virtio, e1000, e1000e, vmxnet3 и.т.д)
  • Адрес — режим cloud-init: не устанавливать / DHCP / ручной адрес. При ручном режиме появляются поля «IP-адрес» и «Шлюз» (адрес в формате X.X.X.X/M)

Кнопка «Удалить» отключает сеть от машины.

Нюанс адресации

В режиме DHCP шлюз не определяется и поле «Шлюз» не используется. При ручном адресе шлюз опционален. Адрес обязательно в формате X.X.X.X/M (с десятичной маской), иначе развертывание завершится ошибкой.

Порядок и удаление VM

Карточки VM можно перемещать выше/ниже и удалять кнопкой «Удалить VM». Порядок карточек влияет на порядок клонирования машин в стенде.

Политика снапшотов

Настройки доступности снапшотов для пользователей:

Поле Назначение
Квота снапшотов (шт.) Лимит пользовательских снапшотов на одну VM. При 0 (и выключенном доступе ко всем) пользователь не может откатываться
Пользователь может откатываться от любых снапшотов Разрешить все снапшоты, включая созданные администратором
Пользователь может удалить созданные им снапшоты Удаление только собственных снапшотов
Пользователь может удалять любые снапшоты Удаление любых снапшотов, включая чужие

Список сетей

Блок «Список сетей» — объявленные сети стенда. Вводится имя сети и нажимается «Добавить», после чего сеть появляется в списке. Для каждой сети можно выбрать тип:

  • Существующий интерфейс (existing) — уже имеющийся bridge-интерфейс ноды
  • SDN-сеть (sdn) — SDN-сеть в указанной зоне. При добавлении через форму имя создаётся как sdn, зона подставляется при развертывании
  • Linux Bridge (bridge) — создаваемый bridge-интерфейс ноды

Сети можно удалять кнопкой «Удалить».

Проверка сетей

Все сети, используемые в подключениях VM, должны быть объявлены в «Списке сетей», иначе сервер вернёт ошибку (лишние или необъявленные сети). Названия сетей на топологии совпадают с именами в этом списке — так пользователи видят, к каким сетям подключена каждая машина.

Сохранение и редактирование

Кнопка «Создать стенд» сохраняет шаблон и выполняет переход в «Мои развертывания». При ошибке (например, занятое имя или некорректные сети) показывается уведомление — исправьте поля и повторите.

Страница /deployment/{id}/edit использует ту же форму с предзаполненными значениями существующего шаблона. Доступ к редактированию — у владельца шаблона и deployment-admin.


Структура шаблона (техническая справка)

Для разработчиков и точной настройки шаблон описывается как DeploymentCreate через API (/api/deployment/deployments). Он состоит из:

  • title — название шаблона (уникальное)
  • vms — список виртуальных машин (ConfigVM)
  • availableVMs — имена машин, доступные пользователям (остальные служебные)
  • networks — объявленные сети (ConfigNetwork)
  • snapshot — политика снапшотов (DeploymentSnapshotPolicy)

Виртуальные машины (vms)

Необязательные поля пропускаются — тогда берутся из шаблона VM:

Поле Тип Значение
clone_from Строка Имя образа (шаблона VM), из которого клонируется машина
name Строка Имя виртуальной машины
vmid Число (опц.) Статический VMID; если не указан — выделяется динамически
delay Число (опц.) Задержка после включения до следующего развертывания
networks Массив (опц.) Подключения сетей к машине
clean_networks Boolean (опц.) Очистить сетевые интерфейсы шаблона перед настройкой. По умолчанию false
running Boolean (опц.) Включать VM после клонирования. По умолчанию true
storage Строка (опц.) Хранилище для full-копии. Если не указано — linked-копия на хранилище шаблона
display Число (опц.) Статический номер VNC-дисплея (только при наличии файлового агента)
cores Число (опц.) Количество ядер CPU
cpu_limit Дробное (опц.) Лимит CPU (например, 2.5)
memory Число (опц.) Память в МБ
tags Массив (опц.) Теги машины (транслитерируются автоматически)
cloudinit_* ... Параметры cloud-init (user, password, dns, domain, sshkeys, upgrade)
disks Массив (опц.) Дополнительные диски (ConfigVMDisk)

Подключение сетей (ConfigVMNetwork)

Поле Тип Обязательный Описание
name Строка Да Имя сети (должно быть объявлено в networks)
number Число Нет Номер сетевого устройства (от 0 до 31)
firewall Boolean Нет Использовать Firewall Proxmox. По умолчанию true
tag Число Нет Числовой тег интерфейса
type Строка Нет Тип устройства. По умолчанию virtio. Допустимые: e1000, e1000-82540em, e1000-82544gc, e1000-82545em, e1000e, i82551, i82557b, i82559er, ne2k_isa, ne2k_pci, pcnet, rtl8139, virtio, vmxnet3
cloudinit_address Строка Нет Адрес через cloud-init: dhcp или X.X.X.X/X
cloudinit_gateway Строка Нет Шлюз через cloud-init (игнорируется при dhcp)

Быстрый способ — указать только имя сети строкой; тогда создаётся virtio-интерфейс со стандартными настройками.

Сети (networks)

Сети объявляются тремя типами — подробнее в документации proxmox-compose:

  • existing — существующий bridge-интерфейс ноды
  • bridge — создаваемый Linux-bridge (поля autostart, comments)
  • sdn — SDN-сеть (поля zone, vlanaware)

Все сети, используемые VM, должны быть объявлены в networks, иначе создание шаблона завершится ошибкой.

Политика снапшотов (snapshot)

Поле Тип Описание
quota Число Лимит пользовательских снапшотов на одну VM
deleteOwned Boolean Разрешить пользователю удалять свои снапшоты
useAny Boolean Разрешить использовать все снапшоты (включая созданные администратором)
deleteAny Boolean Разрешить удалять любые снапшоты

Требования cloud-init

Установка адреса на сетевой интерфейс виртуальной машины (DHCP или вручную) функционирует при следующих требованиях:

  1. На сетевой интерфейс указан статический номер (от 0 до 32)
  2. Для шаблона виртуальной машины создан cloudinit-диск и включены сервисы cloud-init. Уточняйте подробности реализации в документации ОС.
  3. IP-адрес устанавливается в формате "X.X.X.X/M", где M - маска подсети в десятичном виде. Другие форматы приведут к ошибке в развертывании стенда!

Обратите внимание на следующие детали:

  1. Для IP-адреса, получаемого по DHCP, нельзя определить шлюз.
  2. Характеристики адресов отображаются на топологии для пользователей, на которых выполняется развертывание.
  3. При ручном указании адреса шлюз опционален.