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. Цель и принципы
- 2. Требования
- 3. Скачиваем cloud-image
- 4. Вшиваем QEMU Guest Agent
- 5. Создаём VM
- 6. Импорт диска и cloud-init
- 7. Расширение диска (КРИТИЧНО)
- 8. Cloud-init параметры
- 9. Создание template
- 10. Terraform (v3.x)
- 11. Проверка после клона
- 12. Что должно быть в итоге
- 13. Итоговый чеклист
1. Цель и принципы
- Terraform передаёт:
ciusersshkeysipconfig0
- 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 всё указывает явно