Wer regelmäßig neue virtuelle Maschinen in Proxmox VE anlegt, kennt das Problem: Betriebssystem installieren, Benutzer anlegen, Netzwerk konfigurieren, SSH-Keys hinterlegen — bei jeder VM dieselben manuellen Schritte. Cloud-Init löst dieses Problem, indem es VMs beim ersten Start automatisch konfiguriert. In Kombination mit Proxmox-Templates lassen sich neue Systeme in unter einer Minute ausrollen — vollständig konfiguriert und sofort einsatzbereit.
Was ist Cloud-Init?
Cloud-Init ist ein Industriestandard für die automatische Ersteinrichtung von virtuellen Maschinen. Ursprünglich für Cloud-Umgebungen wie AWS und OpenStack entwickelt, ist Cloud-Init heute in nahezu allen Linux-Cloud-Images vorinstalliert. Beim ersten Boot liest der Cloud-Init-Dienst Konfigurationsdaten aus einer angehängten Datenquelle und führt automatisch folgende Schritte aus:
- Hostname setzen
- Benutzer anlegen und Passwörter konfigurieren
- SSH-Public-Keys hinterlegen
- Netzwerk konfigurieren (statische IP oder DHCP)
- Pakete installieren und Befehle ausführen
Proxmox VE unterstützt Cloud-Init nativ und bietet eine eigene Datenquelle, die sich direkt über die Weboberfläche oder die CLI konfigurieren lässt.
Template-VM mit Cloud-Init erstellen
Die Basis für automatisierte VM-Provisionierung ist eine Template-VM mit einem Cloud-fähigen Image. Die meisten Linux-Distributionen bieten fertige Cloud-Images an, die Cloud-Init bereits enthalten.
Cloud-Image herunterladen
# Ubuntu 24.04 Cloud-Image herunterladen
wget https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img
# Alternativ: Debian 12 Cloud-Image
wget https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-genericcloud-amd64.qcow2
VM erstellen und Image importieren
# Neue VM erstellen (ID 9000 als Template-Konvention)
qm create 9000 --name ubuntu-cloud-template --memory 2048 --cores 2 \
--net0 virtio,bridge=vmbr0 --ostype l26 --scsihw virtio-scsi-single
# Cloud-Image als Disk importieren
qm set 9000 --scsi0 local-lvm:0,import-from=/root/noble-server-cloudimg-amd64.img
# Cloud-Init-Laufwerk hinzufügen
qm set 9000 --ide2 local-lvm:cloudinit
# Boot-Reihenfolge auf die SCSI-Disk setzen
qm set 9000 --boot order=scsi0
# Serial Console für Cloud-Images aktivieren
qm set 9000 --serial0 socket --vga serial0
Das Cloud-Init-Laufwerk (ide2) ist ein spezielles ISO-Image, das Proxmox VE bei jedem Start der VM mit den aktuellen Konfigurationsdaten neu generiert.
Cloud-Init-Parameter konfigurieren
# Standardbenutzer und SSH-Key konfigurieren
qm set 9000 --ciuser admin --cipassword $(openssl passwd -6 'SicheresPasswort')
qm set 9000 --sshkeys ~/.ssh/authorized_keys
# Netzwerk konfigurieren (statische IP)
qm set 9000 --ipconfig0 ip=dhcp
# DNS-Server setzen
qm set 9000 --nameserver 1.1.1.1 --searchdomain example.com
VM in Template umwandeln
# VM in ein Template konvertieren
qm template 9000
Nach der Konvertierung kann die VM nicht mehr gestartet oder verändert werden — sie dient ausschließlich als Vorlage für neue Klone.
VMs aus dem Template klonen
Aus dem Template lassen sich in Sekunden neue VMs erstellen:
# Full Clone erstellen
qm clone 9000 110 --name webserver-01 --full
# Cloud-Init-Parameter für den Klon anpassen
qm set 110 --ipconfig0 ip=10.0.10.110/24,gw=10.0.10.1
qm set 110 --nameserver 10.0.10.1
qm set 110 --ciuser deploy
# VM starten
qm start 110
Die VM bootet, Cloud-Init erkennt die Konfiguration und richtet Hostname, Netzwerk, Benutzer und SSH-Keys innerhalb weniger Sekunden ein. Anschließend ist die VM per SSH erreichbar — ganz ohne manuelle Interaktion.
Provisionierung mit Skripten automatisieren
Für die Bereitstellung mehrerer VMs bietet sich ein einfaches Bash-Skript an:
#!/bin/bash
TEMPLATE_ID=9000
BASE_IP="10.0.10"
GATEWAY="10.0.10.1"
SSH_USER="deploy"
declare -A VMS=(
[201]="app-server-01"
[202]="app-server-02"
[203]="db-server-01"
[204]="monitoring-01"
)
for VMID in "${!VMS[@]}"; do
NAME="${VMS[$VMID]}"
echo "Erstelle VM $VMID ($NAME)..."
qm clone $TEMPLATE_ID $VMID --name "$NAME" --full
qm set $VMID --ipconfig0 "ip=${BASE_IP}.${VMID}/24,gw=${GATEWAY}"
qm set $VMID --ciuser "$SSH_USER"
qm resize $VMID scsi0 +18G
qm start $VMID
echo "VM $NAME gestartet."
done
Mit diesem Skript werden vier VMs in wenigen Minuten erstellt, konfiguriert und gestartet. In Kombination mit Ansible oder anderen Konfigurationsmanagement-Tools lässt sich anschließend die Software-Konfiguration automatisieren.
Vergleich: Manuelle Installation vs. Cloud-Init vs. Terraform
| Merkmal | Manuelle Installation | Cloud-Init Template | Terraform + Cloud-Init |
|---|---|---|---|
| Bereitstellungszeit | 30–60 Minuten | 1–2 Minuten | 1–2 Minuten |
| Reproduzierbarkeit | Gering (dokumentationsabhängig) | Hoch (Template-basiert) | Sehr hoch (deklarativ, versioniert) |
| Lernkurve | Niedrig | Mittel | Hoch |
| Skalierung | Manuell pro VM | Skriptbasiert | Vollautomatisch |
| Netzwerk-Konfiguration | Manuell im Installer | Automatisch per Cloud-Init | Automatisch per Provider |
| Drift-Erkennung | Keine | Keine | Integriert |
| Ideal für | Einzelne Test-VMs | KMU mit 10–50 VMs | Große Umgebungen, IaC-Workflows |
Für die meisten mittelständischen Unternehmen bietet Cloud-Init mit Templates das beste Verhältnis aus Aufwand und Nutzen. Terraform lohnt sich, wenn Infrastructure-as-Code-Workflows bereits etabliert sind oder Hunderte VMs verwaltet werden.
Häufige Fehler vermeiden
Cloud-Init läuft nicht: Stellen Sie sicher, dass das heruntergeladene Image tatsächlich Cloud-Init enthält. Standard-ISO-Installationen enthalten Cloud-Init nicht — verwenden Sie ausschließlich die offiziellen Cloud-Images der Distribution.
Netzwerk nicht erreichbar nach dem Klonen: Wenn Sie vergessen, --ipconfig0 für den Klon zu setzen, erhält die VM keine IP-Adresse. Cloud-Init konfiguriert das Netzwerk nur, wenn eine explizite Konfiguration (DHCP oder statisch) hinterlegt ist.
Änderungen greifen nicht: Cloud-Init läuft standardmäßig nur beim ersten Boot. Wenn Sie Cloud-Init-Parameter nach dem ersten Start ändern, müssen Sie Cloud-Init innerhalb der VM zurücksetzen: cloud-init clean --reboot.
Tipps für die Praxis
Template-Pflege: Aktualisieren Sie Ihre Cloud-Images regelmäßig. Erstellen Sie ein neues Template mit dem aktuellen Image und löschen Sie das alte — so enthalten neue VMs immer die neuesten Sicherheits-Updates.
Disk-Größe anpassen: Cloud-Images haben typischerweise nur 2–3 GB Disk-Größe. Verwenden Sie qm resize nach dem Klonen, um die Disk zu vergrößern. Cloud-Init sorgt dafür, dass die Partition beim ersten Boot automatisch erweitert wird.
Mehrere Templates: Erstellen Sie separate Templates für verschiedene Einsatzzwecke — ein minimales Template für Container-Hosts, ein umfangreicheres für Applikationsserver. Verwenden Sie eine konsistente Nummerierung (z. B. 9000–9099 für Templates).
Monitoring mit DATAZONE Control
In Umgebungen mit Dutzenden automatisch provisionierter VMs verliert man schnell den Überblick. DATAZONE Control erfasst neue VMs automatisch und integriert sie in das zentrale Monitoring: CPU, RAM, Disk, Netzwerk und Dienstverfügbarkeit werden sofort überwacht. Alerts bei Ressourcenengpässen oder ausgefallenen Services sorgen dafür, dass Probleme erkannt werden, bevor sie den Betrieb beeinträchtigen — unabhängig davon, ob fünf oder fünfhundert VMs laufen.
Sie möchten VM-Provisionierung in Ihrer Proxmox-Umgebung automatisieren? Kontaktieren Sie uns — wir unterstützen Sie bei der Einrichtung von Cloud-Init-Templates und der Automatisierung Ihrer Proxmox-Infrastruktur.
Mehr zu diesen Themen:
Weitere Artikel
Backup-Strategie für KMU: Proxmox PBS + TrueNAS als zuverlässiges Backup-Konzept
Backup-Strategie für KMU mit Proxmox PBS und TrueNAS: 3-2-1-Regel umsetzen, PBS als primäres Backup-Target, TrueNAS-Replikation als Offsite-Kopie, Retention Policies und automatisierte Restore-Tests.
Proxmox Notification-System: Matcher, Targets, SMTP, Gotify und Webhooks
Proxmox Notification-System ab PVE 8.1 konfigurieren: Matcher und Targets, SMTP-Setup, Gotify-Integration, Webhook-Targets, Notification-Filter und sendmail vs. neue API.
Proxmox Cluster-Netzwerk richtig planen: Corosync, Migration, Storage und Management
Proxmox Cluster-Netzwerk designen: Corosync-Ring, Migration-Network, Storage-Network für Ceph/iSCSI, Management-VLAN, Bonding/LACP und MTU 9000 — mit Beispiel-Topologien.