Ставить ОС с нуля под каждую тестовую VM — трата времени, которой можно избежать: собрать один шаблон с cloud-init и дальше клонировать его за секунды, с готовой сетью и SSH-доступом уже при первом старте.

Cloud-образ вместо установочного ISO — у большинства дистрибутивов есть готовый .qcow2/.img под cloud-init (Ubuntu Cloud Images, Debian Cloud Images). Импорт диска в VM:

qm create 9000 --name ubuntu-cloud-template --memory 2048 --net0 virtio,bridge=vmbr0
qm importdisk 9000 noble-server-cloudimg-amd64.img local-lvm
qm set 9000 --scsihw virtio-scsi-pci --scsi0 local-lvm:vm-9000-disk-0

Добавить cloud-init диск — отдельное виртуальное устройство, через него Proxmox передаёт конфигурацию при первом старте:

qm set 9000 --ide2 local-lvm:cloudinit
qm set 9000 --boot order=scsi0
qm set 9000 --serial0 socket --vga serial0

Превратить VM в шаблон — после этого сама VM 9000 больше не запускается напрямую, только клонируется:

qm template 9000

Клонирование — --full 0 (по умолчанию) создаёт linked clone: новый диск хранит только разницу с шаблоном, место на диске почти не расходуется, но шаблон удалить уже нельзя, пока жив хоть один клон:

qm clone 9000 101 --name test-vm-01
qm set 101 --sshkeys ~/.ssh/id_rsa.pub
qm set 101 --ipconfig0 ip=10.0.0.101/24,gw=10.0.0.1
qm start 101

--full 1 вместо этого копирует диск целиком — независимая VM, можно удалять шаблон позже, но клонирование не мгновенное и место расходуется полностью на каждую копию.

SSH-ключ и сетевые настройки из qm set уходят именно через cloud-init диск — при первом старте cloud-init внутри гостевой ОС читает их и настраивает authorized_keys/сетевой интерфейс сам, без входа в консоль.

#proxmox