Создание шаблонов развертывания
Шаблон развертывания описывает состав стенда: какие виртуальные машины из каких образов (шаблонов VM)
клонируются, как они соединены сетями и какие настройки получают. Шаблон создаётся в веб-интерфейсе на
странице «Создание развертывания» (/deployment/create), а затем на него разворачиваются стенды для
пользователей или групп.
Доступ
Доступ к созданию шаблонов дают роли deployment-create или deployment-admin. Для выбора образов при
создании также требуется роль image-view (или image-admin). Права применяются при повторном входе:
если вы уже были в системе, выйдите и войдите снова.
Обзор страницы
Форма развертывания состоит из четырёх блоков:
- Имя стенда — название шаблона, уникальное в системе
- Список виртуальных машин — карточки VM, каждая описывает одну создаваемую машину
- Политика пользовательских снапшотов — лимиты на снапшоты для пользователей
- Список сетей — объявленные сети стенда
Внизу — кнопка «Создать стенд», которая сохраняет шаблон и отправляет его на сервер.
Имя стенда
Название шаблона отображается в списке «Мои развертывания» и в статистике. Оно должно быть уникальным: при совпадении имени сервер вернёт ошибку «Название шаблона занято». Имя также влияет на теги и на отображение в топологии.
Настройка виртуальной машины
Кнопка «Добавить ВМ» добавляет пустую карточку 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 или вручную) функционирует при следующих требованиях:
- На сетевой интерфейс указан статический номер (от 0 до 32)
- Для шаблона виртуальной машины создан cloudinit-диск и включены сервисы cloud-init. Уточняйте подробности реализации в документации ОС.
- IP-адрес устанавливается в формате "X.X.X.X/M", где M - маска подсети в десятичном виде. Другие форматы приведут к ошибке в развертывании стенда!
Обратите внимание на следующие детали:
- Для IP-адреса, получаемого по DHCP, нельзя определить шлюз.
- Характеристики адресов отображаются на топологии для пользователей, на которых выполняется развертывание.
- При ручном указании адреса шлюз опционален.