
cloud-init służy do autokonfiguracji obrazów systemów operacyjnych.
Jest to wygodny sposób w jaki można szybko stworzyć dużą ilość takich samych i wstępnie skonfigurowanych maszyn wirtualnych w środowisku m.in. proxmoxa.
Poniżej przedstawiam jak stworzyć obraz systemu operacyjnego Debian Bullseye (11) z zainstalowanymi pakietami: vim, qemu-guest-agent, zabbix-agent2 na hoście z proxmoxem. Dodatkowo system będzie umożliwiał połączenie ssh na konto roota za pomocą klucza. Sieć maszyn wirtualnych wg założeń działa na mostku vmbr1.
Na początek potrzebujemy zainstalować pakiet wymagany do budowy:
apt install libguestfs-tools wget
Obraz bazowy, z którego będziemy budować można pobrać stąd: https://cloud.debian.org/images/cloud/
lub wykorzystać prosty skrypt tworzący taki obraz:
#!/bin/bash
export QCOW=debian-11-generic-amd64.qcow2
export ID=9000
export IP=10.10.10.10/20
export GATEWAY=10.10.10.254
export DNS=8.8.8.8
export PASS=supertajnehaslo
wget https://cdimage.debian.org/cdimage/cloud/bullseye/latest/$QCOW
virt-customize -a $QCOW --install qemu-guest-agent
virt-customize -a $QCOW --install vim
virt-customize -a $QCOW --run-command "echo \"Include /etc/ssh/sshd_config.d/*.conf\nPermitRootLogin prohibit-password\nChallengeResponseAuthentication no\nUsePAM yes\nX11Forwarding yes\nPrintMotd no\nAcceptEnv LANG LC_*\nSubsystem sftp /usr/lib/openssh/sftp-server\">/etc/ssh/sshd_config"
virt-customize -a $QCOW --run-command "wget https://repo.zabbix.com/zabbix/6.2/debian/pool/main/z/zabbix-release/zabbix-release_6.2-2+debian11_all.deb -O /tmp/zab.deb"
virt-customize -a $QCOW --run-command "dpkg -i /tmp/zab.deb"
virt-customize -a $QCOW --run-command "rm -f /tmp/zab.deb"
virt-customize -a $QCOW --install zabbix-agent2
qm create $ID --name debian.mojadomena.tld --memory 2048 --net0 virtio,bridge=vmbr1
qm importdisk $ID $QCOW local -format qcow2
qm set $ID --scsihw virtio-scsi-pci --scsi0 /var/lib/vz/images/$ID/vm-$ID-disk-0.qcow2
qm set $ID --agent enabled=1,fstrim_cloned_disks=1
qm set $ID --ide2 local:cloudinit --boot c --bootdisk scsi0 --serial0 socket --vga serial0
qm resize $ID scsi0 +30G
qm set $ID --ipconfig0 ip=$IP,gw=$GATEWAY --nameserver $DNS
qm set $ID --sshkey ~/.ssh/id_rsa-lukasz.pub
qm set $ID --cipassword $PASS
qm cloudinit dump $ID user
qm template $ID
rm -f $QCOW
W efekcie powstaje obraz o ID 9000 i nazwie debian.mojadomena.tld widoczny w interfejsie proxmoxa danego node. Tworzenie maszyny za pomocą takiego obrazu polega na wykonaniu klona obrazu do nowej VM, hostname zostanie ustawiony na nazwę przypisaną w proxmoxie. Zmiana adresu IP VPSa jest możliwa przez kliknięcie w cloid-init nowej VM i edycję IP. Tak stworzona VM jest gotowa do pracy w około 2 minuty od uruchomienia.