Inhaltsverzeichnis
Cloud Init Templates in Proxmox VE
Die einfachste und effizienteste Art und Weise Linux VMs in Proxmox VE zu deployen ist der Einsatz von sogenannten Cloud-Init Images. Diese Images sind speziell angefertigte Installationsmedien, die von nahezu jeder bekannteren Linux-Distribution wie z.B. Debian, Ubuntu oder auch CentOS angeboten werden. Proxmox VE unterstützt Cloud-Init Deployments bereits seit einigen Versionen.
Vorteile gegenüber .ISO
Vorteile im Vergleich zu ISO Images sind:
- Das Betriebssystem muss nicht manuell installiert werden, sondern fährt nach dem Deployen automatisch hoch.
- Über die Proxmox VE Oberfläche können diverse Parameter je Template-Klon mitgegeben werden.
- Vor dem Deployment kann man mittels diverser Tools wie den libguestfs-tools Anpassungen an den Images vornehmen:
- Integration von Software-Paketen über den Paketmanager
- Änderung von Dateien nach eigenem Wunsch vor Deployment
- Setzen eines Root-Passworts oder das Anlegen eines neuen Users
Cloud Init Parameter innerhalb PVE
Folgende Parameter sind einsehbar innerhalb des angelegten Cloud-Init-Drives in der Proxmox VE Oberfläche:
- User (es wird ein User angelegt)
- Password (es wird ein Passwort gesetzt)
- DNS domain (DNS Domain Override zum PVE-Host Default)
- DNS servers (DNS Server Override zum PVE-Host Default)
- SSH public key (ein eigener persönlicher SSH-Pub Key)
- Upgrade packages yes (das Image wird beim Erst-Start komplett aktualisiert)
- IP Config (net0) (IP-Konfiguration für das erste Netzwerk-Device, Statisch oder DHCP)
Cloud Init Images vorbereiten
Es folgt eine Anlage eines Templates mit der ID 9500, welches die von uns empfohlenen Best-Practices bezüglich einer VM-Anlage in PVE beinhaltet. Einige Parameter müssen noch an Ihre Infrastruktur angepasst werden, zum Beispiel der Pfad, indem das Image heruntergeladen werden soll.
Debian 12 (Bookworm) Cloud-Image
apt update
apt install libguestfs-tools
cd ~/tmp/ wget https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2 virt-customize -a ~/tmp/debian-12-generic-amd64.qcow2 --install qemu-guest-agent virt-customize -a ~/tmp/debian-12-generic-amd64.qcow2 --run-command "echo -n > /etc/machine-id"
Cloud Init Template erzeugen
Erstellen eines Bash Scriptes
vim ~/tmp/createDebian12CloudInit_VMtemplate.sh
# Set the VM ID to operate on VMID=900 # Choose a name for the VM TEMPLATE_NAME=Debian12CloudInit # Choose the disk image to import DISKIMAGE=debian-12-genericcloud-amd64.qcow2 # Select Host disk HOST_DISK=Data # fetch cloud-init image wget https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-genericcloud-amd64.qcow2 # Delete old template qm destroy $VMID # Create the VM qm create $VMID --name $TEMPLATE_NAME --net0 virtio,bridge=vmbr60 --pool Templates # Set the OSType to Linux Kernel 6.x qm set $VMID --ostype l26 # Import the disk qm importdisk $VMID $DISKIMAGE $HOST_DISK # Attach disk to scsi bus qm set $VMID --scsihw virtio-scsi-pci --scsi0 $HOST_DISK:vm-$VMID-disk-0,cache=writeback,ssd=1 # Set scsi disk as boot device qm set $VMID --boot c --bootdisk scsi0 # Create and attach cloudinit drive qm set $VMID --ide2 $HOST_DISK:cloudinit # Set serial console, which is needed by OpenStack/Proxmox qm set $VMID --serial0 socket --vga serial0 # Enable Qemu Guest Agent qm set $VMID --agent enabled=1 # optional but recommened # Convert the VM into a template qm template $VMID
Skript ausführen
cd ~/tmp/ ./createDebian12CloudInit_VMtemplate.sh