Шаблоны ОС и ISO-образы
В панели управления: Services › Virtual Machines › Template (
/vm/templates). Шаблоны Proxmox отображаются для каждого кластера в Infrastructure › Cloud provider › Providers › (cluster) › Clusters.
Назначение
Шаблон — это образ операционной системы, из которого развертывается новая VM. NexCMP не хранит образы самостоятельно: система считывает данные из CloudStack (готовые шаблоны из категории featured) или список из кластера Proxmox и позволяет выбрать, какие из них предлагать клиентам, задав отображаемое имя, иконку и имя пользователя. На этой странице описано, как подготовить образы для корректной работы с NexCMP: вход по паролю, горячее масштабирование CPU и RAM, swap-файл и автоматическое расширение корневого диска до размера тарифа.
Требования
| Параметр | Требование |
|---|---|
| Сборщик шаблонов CloudStack | Машина под управлением Linux с libguestfs-tools (virt-customize, virt-sparsify, guestfish), qemu-utils, curl и около 5 GB свободного места на диске. KVM и права root не требуются. Необходим доступ в интернет для установки пакетов (или сборка с флагом --offline). |
| Где находится сборщик | Поставляется с каждым релизом в /opt/nexcmp/releases/<version>/share/templates/ на сервере панели. Запускать его именно там необязательно: каталог можно скопировать на любую Linux-машину. |
| Веб-сервер | Любой HTTP(S)-сервер, доступный виртуальной машине вторичного хранилища CloudStack, для публикации готового файла .qcow2. Доступ из интернета не требуется. |
| CloudStack | Учетная запись с правами регистрации шаблонов, а также ID вашей зоны и соответствующего типа ОС. См. CloudStack. |
| Proxmox VE | Шаблонные VM cloud-init с QEMU guest agent, по одной на каждую ОС и узел. См. Proxmox VE. |
| Зависимости | Предварительно подключенный CloudStack или Proxmox VE. |
Подготовка инфраструктуры
CloudStack: сборка шаблона
Поддерживаемые базовые образы (образ загружается от поставщика с проверкой контрольной суммы до внесения каких-либо изменений):
| Образ | --distro | Имя пользователя |
|---|---|---|
| Ubuntu 22.04 | ubuntu-22.04 | ubuntu |
| Ubuntu 24.04 | ubuntu-24.04 | ubuntu |
| Debian 12 | debian-12 | debian |
| Rocky Linux 9 | rocky-9 | rocky |
Другие дистрибутивы: добавьте строку в distros.conf (URL образа, файл контрольной суммы, семейство deb или rpm).
Скопируйте сборщик на сборочную машину и запустите его:
bashcp -r /opt/nexcmp/releases/<version>/share/templates ~/templates && cd ~/templates ./build-template.sh --distro ubuntu-24.04 --version v7 --work ./outДобавьте
--panel-url https://cloud.example.com, чтобы встроить опциональный агент мониторинга при первой загрузке, регистрирующийся в вашей панели (только HTTPS). Без него агент не добавляется. Другие параметры:--base <file>для использования заранее скачанного образа,--offlineдля пропуска установки пакетов.В результате создаются
out/ubuntu-24.04-v7.qcow2и его.sha256. Сборка завершается запускомverify-image.sh, который проверяет готовый образ в режиме «только чтение» и отклоняет некорректный (он сохраняется как.unverified). Проверку можно перезапустить в любой момент:./verify-image.sh out/ubuntu-24.04-v7.qcow2 --no-agent.
Что сборщик добавляет в образ:
| Параметр | Назначение |
|---|---|
qemu-guest-agent | CloudStack может запрашивать у ВМ данные о процессорах и IP-адресах, а также переводить ее в согласованное состояние для Snapshots. |
cloud-init с источником данных CloudStack, set_passwords при каждой загрузке, вход по SSH по паролю | Сгенерированный пароль запрашивается из виртуального маршрутизатора, и функция Reset password работает. |
| Правило udev для горячего подключения CPU и RAM | Горячеподключенные vCPU и RAM подключаются автоматически, поэтому динамическое масштабирование и Auto Scaling работают. |
| Служба файла подкачки | Создает /swapfile размером в меньшее из двух значений: 50% RAM или 4 GiB после расширения диска. touch /etc/cmp-swap.disabled отключает его. |
cloud-init growpart и resizefs | Небольшой корневой диск расширяется до размера диска по тарифу при первой загрузке. |
| Пустой machine-id, отсутствие хостовых ключей SSH | Каждая ВМ получает собственный уникальный идентификатор. |
Назовите шаблон <OS> <version> <vN>
NexCMP включает Auto Scaling для шаблонов, имя которых оканчивается на vN или vN.M с N от 6 и выше (Ubuntu 24.04 v7, Rocky Linux 9 v7.1). Сборщик применяет это правило для --version. Зарегистрируйте шаблон в точности с выведенным именем.
Опубликуйте файл и зарегистрируйте его в CloudStack. Используйте выведенный сборщиком хэш SHA-256 и регистрируйте шаблон только после полной записи файла:
bashcmk list ostypes keyword="Ubuntu 24.04" filter=id,description cmk register template name="Ubuntu 24.04 v7" displaytext="Ubuntu 24.04 v7" \ url=https://files.example.com/ubuntu-24.04-v7.qcow2 zoneid=<zone-id> format=QCOW2 hypervisor=KVM \ ostypeid=<os-type-id> passwordenabled=true sshkeyenabled=true isdynamicallyscalable=true \ requireshvm=true isextractable=false ispublic=true isfeatured=true \ checksum="{SHA-256}<sha256 of the file>" \ details[0].guest.cpu.mode=host-passthrough details[0].rootDiskController=osdefaultpasswordenabled=trueпозволяет CloudStack генерировать пароль ВМ.isdynamicallyscalable=trueразрешает динамическое масштабирование.host-passthroughтребуется для загрузки актуальных образов Rocky и Alma;osdefaultобеспечивает переносимость дискового контроллера.
Дождитесь, пока статус шаблона не сменится на Download Complete / Ready.
Образ поставщика сохраняет небольшой виртуальный размер (около 3.5 GiB для Ubuntu и Debian, 10 GiB для Rocky). Помните, что диск в тарифном плане не может быть меньше диска шаблона.
Proxmox VE: создание шаблона
Соберите шаблон ВМ с cloud-init для каждой ОС на каждом целевом узле развертывания, установив гостевой агент и включив вход для root, затем зарегистрируйте его как os-key=vmid. Все команды приведены в Proxmox VE. Описанный выше сборщик для CloudStack не предназначен для Proxmox: он настраивает cloud-init под источник данных CloudStack.
ISO-образы
Клиенты подключают собственные ISO-образы через модуль Images (CloudStack) или модуль Dedicated Server. Они не связаны с шаблонами ОС, описанными на этой странице. См. Модули и Выделенные серверы.
Подключение в NexCMP
Откройте Services › Virtual Machines › Template. Нажмите Sync now или подождите до 15 минут. Синхронизация добавит готовые (ready) и рекомендованные (featured) в CloudStack шаблоны.

Нажмите Edit для нового шаблона и настройте параметры, которые увидят клиенты:
Поле Пример значения Отображаемое имя для клиентов Ubuntu 24.04 LTSСемейство ОС ubuntu(значок и пользователь по умолчанию)Версия 24.04Имя пользователя для входа ubuntu(для Windows:Administrator; для остальных:root)Значок URL изображения, путь или имя Порядок 10Активность On Горячее подключение vCPU/RAM (live scale) Auto by name (v6 or later), Yes или No (needs a restart) 
Включите шаблон. Шаблон, который больше не отображается в CloudStack, скрывается автоматически (при соответствующей настройке вы получите оповещение в Telegram); он никогда не удаляется из NexCMP.
Замена шаблона на более новую сборку
Используйте More › Replace with new version для продаваемого шаблона. Выберите новый, готовый и отключенный в данный момент шаблон. После этого продаваемая запись начнет указывать на новую сборку, сохранив свое имя, порядок и иконку; старая запись отключается для возможности отката (для возврата используйте Replace в новой записи). Работающие VM затронуты не будут. Если новая сборка относится к другому семейству ОС, сначала установите флажок подтверждения.
Проверка
- В строке отображается ready и, для сборок с именем
vN, где N равно 6 или больше, CPU hot-plug: supported. - Разверните одну тестовую VM из шаблона и проверьте внутри нее:
- можно войти с паролем, указанным в портале;
df -h /показывает размер диска по тарифу;- после масштабирования на лету (Change plan без перезагрузки) значения
nprocиfree -mувеличиваются; swapon --showвыводит/swapfile(диски, где свободно меньше swap плюс 2 GiB, пропускают его);systemctl is-active qemu-guest-agentвыводитactive.
- Если вы встроили агент в образ, VM появится в списке мониторинга панели через минуту после первой загрузки. У VM должен быть собственный публичный IP: панель распознает ее по исходящему публичному IP.
Ограничения и примечания
- Сборщик работает только в Linux и собирает образы Linux. Другие образы (например, Windows) можно зарегистрировать в CloudStack другими способами; NexCMP отображает то, что передает CloudStack.
- Поставляется только агент для amd64; на других архитектурах установка агента пропускается.
- Образ проверяется с помощью
guestfish, но сборщик никогда его не загружает. Всегда развертывайте одну тестовую VM перед продажей нового образа. - Пропустите установку агента на одной VM с помощью
touch /etc/cmp-agent.disabledперед первой загрузкой. Удалите его позже командойsystemctl disable --now cmp-agent cmp-agent-install; rm -rf /etc/cmp-agent /usr/local/bin/cmp-agent, затем удалите агент в консоли администратора.
Устранение неполадок
| Симптом | Причина | Решение |
|---|---|---|
virt-customize не удается загрузить пакеты | У сборочной машины нет исходящего сетевого подключения | Настройте DNS или прокси на этой машине либо выполните сборку с --offline на базовом образе, где пакеты уже установлены. |
libguestfs: error: /usr/bin/supermin exited with error status 1 | Ядро хоста недоступно для чтения текущему пользователю (Ubuntu) | sudo chmod +r /boot/vmlinuz* или запустите сборку от имени root. |
| Контрольная сумма не совпадает или образ вендора больше не существует | Вендоры перемещают файлы «latest» | Скачайте образ самостоятельно, сверьте его с файлом контрольной суммы вендора и передайте через --base. |
| Rocky: невозможно смонтировать более новую версию XFS | Слишком старое ядро хоста | Выполните сборку на машине с актуальным ядром. |
--version must be v6 or higher | Имя должно иметь вид vN, где N равно 6 или больше | Используйте --version v7. |
--panel-url must be a plain https:// URL | Агент скачивается и запускается от root, поэтому обычный HTTP отклоняется | Используйте URL https:// без пробелов, кавычек или строки параметров. |
| Шаблон остается в статусе not ready | CloudStack еще не завершил загрузку | Дождитесь Download Complete и проверьте, доступен ли URL с secondary storage VM. |
| В строке отображается no-pass | Шаблон был зарегистрирован без passwordenabled=true | Зарегистрируйте его заново с этим флагом. |
| Для CPU hot-plug отображается unsupported | Имя не заканчивается на vN (где N равно 6 или больше) | Переименуйте шаблон или установите vCPU/RAM hot-plug в Yes в меню Edit, если в образе настроено правило udev. |
| «Empty template list» после первого подключения | Синхронизация еще не выполнялась | Нажмите Sync now (требуется работающий worker) или дождитесь 15-минутного цикла. |