Benutzer-Werkzeuge

Webseiten-Werkzeuge


it-wiki:proxmox:templating_cloudinit

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

Eine VM aus dem Cloudinit Template erstellen.

it-wiki/proxmox/templating_cloudinit.txt · Zuletzt geändert: 2025/01/29 16:43 von marko