Ubuntu cloud-init template для Proxmox/Terraform

22 November 2025

Cloud-init в Proxmox — это не просто «Convert to Template». Чтобы оно реально работало с Terraform, автоматизацией и динамическими настройками, нужно правильно подготовить виртуалку. Этот гайд — максимально подробная инструкция по созданию эталонного Cloud-Init шаблона для Ubuntu в Proxmox VE. Учитываются все нюансы: подбор образа, настройки виртуалки, cloud-init параметры, очистка, конвертация в шаблон, типичные ошибки и способы проверки.


Идеальный Ubuntu cloud-init template для Proxmox — готово к Terraform

Коротко: делаем реально рабочий cloud-init template для Proxmox, который:

  • корректно клонируется
  • имеет QEMU Guest Agent внутри
  • root-диск сразу нормального размера
  • стабильно работает с Terraform Proxmox provider v3.x
  • не сыпется ошибками QGA not running, No space left on device, 400 not enough arguments

Содержание

1. Цель и принципы

  • Terraform передаёт:
    • ciuser
    • sshkeys
    • ipconfig0
  • Template содержит:
    • рабочий QEMU Guest Agent
    • serial console (ttyS0)
    • root FS ≥ 10G

↑ Наверх


2. Требования

  • Proxmox VE 7 / 8 / 9
  • root-доступ
  • storage local-lvm
  • интернет или локальный .img

↑ Наверх


3. Скачиваем cloud-image

cd /var/lib/vz/template/iso
wget https://cloud-images.ubuntu.com/releases/22.04/release/ubuntu-22.04-server-cloudimg-amd64.img

↑ Наверх


4. Вшиваем QEMU Guest Agent

apt update
apt install -y libguestfs-tools
cp ubuntu-22.04-server-cloudimg-amd64.img ubuntu-22.04-qga.img

virt-customize -a ubuntu-22.04-qga.img \
  --install qemu-guest-agent \
  --run-command "systemctl enable qemu-guest-agent"

↑ Наверх


5. Создаём VM (без запуска)

qm create 9000 \
  --name ubuntu-cloud \
  --memory 2048 \
  --cores 2 \
  --net0 virtio,bridge=vmbr0 \
  --serial0 socket \
  --vga serial0 \
  --ostype l26

↑ Наверх


6. Импорт диска и cloud-init

qm importdisk 9000 ubuntu-22.04-qga.img local-lvm

qm set 9000 \
  --scsihw virtio-scsi-pci \
  --scsi0 local-lvm:vm-9000-disk-0

qm set 9000 --ide2 local-lvm:cloudinit,media=cdrom
qm set 9000 --boot order=scsi0
qm set 9000 --agent enabled=1

↑ Наверх


7. Расширяем диск (КРИТИЧНО)

qm resize 9000 scsi0 10G

Это обязательный шаг.

↑ Наверх


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

qm set 9000 \
  --ciuser ubuntu \
  --cipassword "" \
  --serial0 socket \
  --vga serial0 \
  --onboot 0

↑ Наверх


9. Делаем template

qm stop 9000
qm template 9000

↑ Наверх


10. Terraform (v3.x)

resource "proxmox_vm_qemu" "vm" {
  clone = 9000
  agent = 1
}

↑ Наверх


11. Проверка после клона

for i in {1..12}; do
  qm agent 9100 ping && break
  sleep 5
done

↑ Наверх


12. Что должно быть в итоге

df -h /
qm agent 9100 network-get-interfaces

↑ Наверх


13. Итоговый чеклист

  • cloud-image
  • QGA вшит
  • disk resize до template
  • serial + cloudinit
  • Terraform всё указывает явно

↑ Наверх

Leave a comment

Popular Posts

Headlines