Cloud-init w Proxmox — maszyny gotowe w minutę z obrazu chmurowego
Ręczna instalacja systemu z ISO przy każdej nowej maszynie to strata czasu. Dystrybucje udostępniają obrazy chmurowe (cloud image) — gotowe dyski, które przy pierwszym starcie same konfigurują się przez cloud-init. W Proxmox robisz z tego szablon i stawiasz maszynę w kilkadziesiąt sekund.
Krok 1: pobierz obraz chmurowy
Dla Debiana:
cd /var/lib/vz/template/iso
wget https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-genericcloud-amd64.qcow2
Obraz genericcloud jest lekki (kilkaset MB) i zawiera pakiet cloud-init.
Krok 2: utwórz maszynę i podepnij dysk
qm create 9000 --name debian12-tpl --memory 2048 --cores 2 --cpu host \
--net0 virtio,bridge=vmbr0 --scsihw virtio-scsi-single --ostype l26 --agent 1
qm importdisk 9000 debian-12-genericcloud-amd64.qcow2 local --format qcow2
qm set 9000 --scsi0 local:9000/vm-9000-disk-0.qcow2
qm set 9000 --ide2 local:cloudinit
qm set 9000 --boot order=scsi0 --serial0 socket --vga serial0
Serwisowa konsola szeregowa (serial0) jest wymagana przez obrazy chmurowe — bez niej nie zobaczysz konsoli.
Krok 3: zamień w szablon
qm template 9000
Od teraz z 9000 klonujesz maszyny błyskawicznie.
Krok 4: sklonuj i skonfiguruj przez cloud-init
qm clone 9000 101 --name web01 --full
qm disk resize 101 scsi0 40G
qm set 101 --ciuser root --sshkeys ~/.ssh/id_ed25519.pub
qm set 101 --ipconfig0 ip=192.168.10.101/24,gw=192.168.10.1 --nameserver 1.1.1.1
qm start 101
Przy pierwszym starcie cloud-init sam: ustawi hostname, wgra klucz SSH, ustawi adres IP i powiększy partycję do rozmiaru dysku. Po kilkudziesięciu sekundach logujesz się kluczem — bez dotykania instalatora.
Wgrywanie wielu kluczy naraz
Jeśli dostęp ma mieć kilka osób lub kont automatyzacji, wskaż plik z wieloma kluczami:
cat ~/.ssh/id_ed25519.pub /root/klucze/admin.pub > /root/vm-keys.pub
qm set 101 --sshkeys /root/vm-keys.pub
Wszystkie klucze wylądują w authorized_keys roota od pierwszego bootu.
Dwie pułapki, które warto znać
- Blokada apt na pierwszym boocie. Cloud-init i unattended-upgrades potrafią trzymać blokadę
aptprzez pierwsze minuty. Jeśli automatyzujesz instalację czegoś zaraz po starcie, poczekaj na zwolnienie blokady albo uruchom zadanie przezsystemd-run, żeby przetrwało zerwanie sesji SSH. - IP i MAC przy publicznych adresach. Klonując maszynę, która ma dostać publiczny IP z osobnym MAC (np. u Hetznera), ustaw ten MAC na karcie:
qm set 101 --net0 virtio=AA:BB:CC:DD:EE:FF,bridge=vmbr0.
Cloud-init to podstawa powtarzalnej infrastruktury. Gdy maszyny stawiasz z jednego szablonu i konfigurujesz parametrami, cała flota jest spójna, a odtworzenie środowiska to kwestia kilku komend.