Planetahost VPS
Перейти к основному контенту

Создание и использование шаблонов в Proxmox VE

Введение

Что такое шаблон ВМ и для чего он используется

Шаблон виртуальной машины (VM template) — это заранее настроенный образ операционной системы с установленным необходимым программным обеспечением, конфигурациями и обновлениями. Шаблон нельзя запустить, но можно многократно клонировать, создавая на его основе полноценные рабочие ВМ.

Основные цели использования шаблонов:
  • Стандартизация — все виртуальные машины создаются из единого эталонного образа.
  • Экономия времени — не нужно каждый раз устанавливать ОС, настраивать ПО и применять обновления.
  • Масштабирование — быстрое развёртывание десятков одинаковых серверов (веб-серверов, баз данных, рабочих станций).

Отличие от клонирования и моментальных снимков

Механизм Особенности Когда использовать
Моментальный снимок (snapshot) Сохраняет состояние диска и памяти в определённый момент; можно вернуться назад. Перед рискованными обновлениями, тестированием.
Клонирование ВМ (clone) Создаёт полную или связанную копию работающей или остановленной ВМ. Создание резервной копии, дублирование ВМ «на лету».
Шаблон (template) Специальный режим ВМ только для клонирования; сама ВМ не запускается. Многократное создание идентичных ВМ.

Главное отличие шаблона: после преобразования ВМ в шаблон её нельзя включить или изменить — она становится «золотым образом». При этом любой пользователь с правами на шаблон может создать свою копию.

Превращение существующей ВМ в шаблон

Подготовка ВМ: удаление уникальных данных

Перед конвертацией ВМ в шаблон необходимо очистить систему от уникальных идентификаторов, иначе каждая клонированная ВМ будет иметь одинаковые SSH-ключи, UUID файловых систем, hostname и т.д. Это вызовет конфликты в сети и проблемы безопасности.

Для Linux

Выполните внутри подготавливаемой ВМ:

  1. Очистка логов и временных файлов
    • sudo rm -rf /var/log/* /tmp/* /var/tmp/*

  2. Удаление machine-id (будет создан заново при загрузке)
    • sudo truncate -s 0 /etc/machine-id
      sudo rm -f /var/lib/dbus/machine-id

  3. Удаление SSH-ключей хоста (будут сгенерированы при первом запуске)
    • sudo rm -f /etc/ssh/ssh_host_*

  4. Очистка истории команд
    • history -c && rm -f ~/.bash_history

  5. Обновление базы данных locate (опционально)
    • sudo updatedb

Примерный вывод комманд:

image.png

Для дистрибутивов с NetworkManager добавьте в /etc/NetworkManager/NetworkManager.conf:

[main]
no-auto-default=*
Для Windows

Используйте встроенную утилиту Sysprep (обобщение образа):

  1. Запустите %WINDIR%\System32\Sysprep\sysprep.exe
    • image.png

  2. Выберите:
    • Действие: «Перейти в окно приветствия системы (OOBE)»
    • Флажок: «Подготовить к использованию»
    • Параметры завершения работы: «Завершение работы»
    • image.png

  3. Нажмите OK. После завершения ВМ выключится.
    • image.png

Sysprep удаляет уникальные данные (SID, имена компьютеров, драйверы устройств) и подготавливает образ для клонирования.

Выключение ВМ и конвертация в шаблон

  1. В веб-интерфейсе Proxmox VE выберите нужную ВМ.
    • image.png

  2. Убедитесь, что подготовленная ВМ выключена (статус «Stopped»).
    • image.png

  3. Нажмите правой кнопкой мыши на ВМ → Convert to template (или в меню «More»).
    • image.png

  4. Подтвердите действие.
    • image.png

После этого иконка ВМ изменится на шаблон (символ «штамп»), а статус станет «Template».

image.png

Особенности шаблона

  • Шаблон нельзя запустить — кнопка «Start» неактивна.
  • Диски шаблона доступны только для чтения — нельзя редактировать файлы внутри.
  • Шаблон можно клонировать неограниченное количество раз.
  • Удаление шаблона удаляет все его диски — будьте осторожны, если от него зависят связанные клоны (Linked Clone).

Развёртывание (клонирование) из шаблона

Запуск клонирования

  1. В левом дереве ресурсов выберите шаблон (отображается со специальным значком).
    • image.png

  2. Нажмите Clone (в верхней панели или в контекстном меню).
    • image.png

    • image.png

Выбор режима клонирования

Режим Описание Плюсы / Минусы
Linked Clone (связанный клон) Создаёт новый диск, который хранит только изменения относительно шаблона (Copy-on-Write). Сам шаблон должен оставаться нетронутым. + Экономия места, очень быстрое создание.
— Производительность ниже при записи, шаблон нельзя удалить.
Full Clone (полный клон) Создаёт полностью независимую копию всех дисков шаблона. + Независимость, высокая производительность.
— Занимает много места, клонирование дольше.

image.png

Для большинства сценариев (особенно если диски шаблона небольшие) рекомендуется Full Clone, чтобы не зависеть от исходного шаблона.

Настройки клона

Заполните параметры в окне клонирования:

  • VM ID — уникальный числовой идентификатор (можно оставить автоматический).
    • image.png

  • Name — имя новой ВМ (например, server-01).
    • image.png

  • Target Storage — хранилище для дисков клона (если не указано, используется то же, где шаблон).
    • image.png

  • Resource Pool (опционально) — поместить ВМ в пул ресурсов.
    • image.png

Важно: При клонировании шаблона нельзя сразу изменить размер диска или количество CPU/RAM — это делается уже после создания ВМ (через аппаратное обеспечение).

Запуск новой ВМ

  1. После завершения клонирования (процесс занимает от нескольких секунд до минут в зависимости от размера диска) вы увидите новую ВМ в списке.
    • image.png

  2. Выделите ВМ → нажмите Start.
    • image.png

  3. Дождитесь загрузки. Для Linux-клонов при первом запуске:
    • Сгенерируются новые SSH-хостовые ключи.
    • Создастся новый /etc/machine-id.
    • Может запроситься настройка сети (если использовался DHCP).
  4. Для Windows-клонов (если использовали Sysprep) откроется окно приветствия (OOBE) — задайте имя компьютера, пользователя и настройки.

Подготовка образа для шаблона из облака (cloud-init)

Cloud-init — это стандарт для настройки облачных образов. Proxmox VE поддерживает cloud-init, что позволяет передавать в шаблон пользовательские данные (хостнейм, SSH-ключи, пароли, сетевые настройки) во время клонирования.

Создание шаблона с поддержкой cloud-init

  1. Подготовьте базовую ВМ с ОС (Ubuntu, Debian, CentOS, Rocky и т.д.). Установите пакет cloud-init:
    • Debian/Ubuntu
      • s
        udo apt update && sudo apt install cloud-init -y
    • RHEL/CentOS
      • sudo yum install cloud-init -y

  2. Настройте cloud-init (обычно достаточно конфигурации по умолчанию). При необходимости отредактируйте /etc/cloud/cloud.cfg (например, установите имя пользователя ubuntu или admin).
    • image.png

  3. Выключите ВМ.
    • image.png

  4. В веб-интерфейсе Proxmox выберите ВМ → Hardware → Add → CloudInit Drive.

    • image.png

       
    • Выберите хранилище (лучше то же, где диск ОС) и тип носителя.

      • image.png

      • image.png

    • После добавления появится новый диск (обычно размером 4 МБ).

      • image.png

  5. Преобразуйте ВМ в шаблон как описано выше.

Настройка пользовательских данных при клонировании

При клонировании шаблона с cloud-init сделайте следующее:

  1. Запустите клонирование (Clone) в режиме Full Clone (или Linked).
    • image.png

    • image.png

  2. После создания клона (до первого запуска) выберите его в интерфейсе → перейдите на вкладку Cloud-Init.
    • image.png

  3. Заполните нужные поля:
    • User — имя пользователя (например, admin).
    • Password — пароль (будет хэширован).
    • SSH public key — можно вставить содержимое id_rsa.pub для доступа по ключу.
    • DNS domain / DNS servers — настройки DNS.
    • IP Configuration — статический IP или DHCP.
    • image.png

  4. Нажмите Regenerate Image (перегенерировать конфигурацию).
    • image.png

  5. Запустите ВМ.
    • image.png

При первой загрузке cloud-init автоматически:

  • Применит указанные сетевые настройки.
  • Создаст пользователя с заданным паролем/ключом.
  • Установит hostname и т.д.

Совет: После успешного первого запуска можно отключить cloud-init (удалить пакет или остановить сервис), чтобы при последующих перезагрузках не переписывались настройки.

Заключение

Использование шаблонов в Proxmox VE — это мощный инструмент для автоматизации и стандартизации среды виртуализации. Следуя инструкциям выше, вы сможете:

  • Создавать эталонные образы как для Linux, так и для Windows.
  • Быстро развёртывать новые ВМ вручную или через API (например, pvesh create /nodes/{node}/qemu -template 0 ...).
  • Внедрить cloud-init для динамической настройки хостов.

Рекомендации:

  • Храните шаблоны в отдельном пуле или на хранилище с репликацией.
  • Регулярно обновляйте шаблоны.
  • Используйте системы управления конфигурациями (Ansible, Terraform) для автоматического клонирования и настройки ВМ из шаблонов.