Was ist Cloud-Init?
Cloud-Init ist ein Industriestandard zur automatischen Konfiguration von virtuellen Maschinen beim ersten Start. Es wurde ursprünglich für Cloud-Umgebungen (AWS, Azure, GCP) entwickelt, funktioniert aber perfekt in Proxmox VE.
Mit Cloud-Init können Sie beim VM-Klonen automatisch konfigurieren:
- Hostname und Domain
- Netzwerk (IP, Gateway, DNS)
- SSH Public Keys
- Root-Passwort
- Paketinstallation (via user-data)
Warum Cloud-Init statt manueller Konfiguration?
Ohne Cloud-Init:
- VM-ISO herunterladen
- Betriebssystem 20+ Minuten installieren
- IP manuell konfigurieren
- SSH-Key manuell eintragen
- Pakete installieren
Mit Cloud-Init-Template:
- Template klonen (30 Sekunden)
- IP und Hostname in Proxmox eintragen
- VM starten → fertig konfiguriert in 60 Sekunden
Voraussetzungen
- Proxmox VE 7.x oder 8.x
- Internet-Verbindung für Cloud-Image-Download
Schritt 1: Cloud-Image herunterladen
Die meisten Linux-Distributionen bieten Cloud Images an – vorgefertigte Festplattenimages mit vorinstalliertem Cloud-Init.
Auf dem Proxmox-Host:
Ubuntu 24.04 LTS (Noble):wget https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img -O /tmp/ubuntu-24.04-cloud.img
Ubuntu 22.04 LTS (Jammy):wget https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img -O /tmp/ubuntu-22.04-cloud.img
Debian 12:wget https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2 -O /tmp/debian-12-cloud.qcow2
Schritt 2: VM als Template-Basis erstellen
Erstellen Sie eine neue VM (keine normale Installation!):
qm create 9000 --name "ubuntu-24.04-template" --memory 2048 --cores 2 --net0 virtio,bridge=vmbr0 --ostype l26
Schritt 3: Cloud-Image importieren
qm importdisk 9000 /tmp/ubuntu-24.04-cloud.img local-lvm --format raw
Ausgabe: "Successfully imported disk as 'unused0:local-lvm:vm-9000-disk-0'"
Schritt 4: Importierte Disk und Cloud-Init-Drive konfigurieren
Disk an VM hängen (SCSI mit VirtIO-SCSI-Controller):
qm set 9000 --scsihw virtio-scsi-pci --scsi0 local-lvm:vm-9000-disk-0,discard=on
Cloud-Init-Drive hinzufügen (CDROM mit Konfigurationsdaten):
qm set 9000 --ide2 local-lvm:cloudinit
Boot-Reihenfolge und Serielle Konsole:
qm set 9000 --boot c --bootdisk scsi0 qm set 9000 --serial0 socket --vga serial0
Schritt 5: Cloud-Init-Standardwerte setzen
qm set 9000 --ciuser root qm set 9000 --cipassword "IhrSicheresPasswort" qm set 9000 --sshkeys /root/.ssh/authorized_keys qm set 9000 --ipconfig0 ip=dhcp
Oder mit statischer IP:qm set 9000 --ipconfig0 ip=192.168.1.50/24,gw=192.168.1.1
DNS konfigurieren:qm set 9000 --nameserver "8.8.8.8 8.8.4.4" qm set 9000 --searchdomain ihrefirma.de
Schritt 6: Disk vergrößern (empfohlen)
Das Cloud-Image ist oft nur 2-5 GB groß. Vergrößern Sie es auf eine sinnvolle Größe:
qm resize 9000 scsi0 +18G – Disk auf 20 GB vergrößern (2 GB Original + 18 GB)
Schritt 7: VM in Template umwandeln
qm template 9000
Die VM erscheint jetzt in der Proxmox-Weboberfläche mit einem speziellen Template-Icon. Templates können nicht gestartet werden – nur geklont.
Schritt 8: VM aus Template klonen
Über die Weboberfläche
- Template (9000) auswählen → Clone
- Mode: Full Clone (eigenständige Kopie)
- Target Storage: Wählen Sie den Storage
- Name: z. B.
webserver-01 - Clone
Danach: Neue VM → Cloud-Init-Tab:
- Hostname anpassen
- IP-Adresse eintragen
- Password/SSH-Keys prüfen
- Regenerate Image klicken
Über die Kommandozeile
qm clone 9000 101 --name webserver-01 --full qm set 101 --ciuser root --ipconfig0 ip=192.168.1.101/24,gw=192.168.1.1 qm set 101 --nameserver 8.8.8.8 qm start 101
Die VM startet, konfiguriert sich per Cloud-Init (IP, Hostname, SSH-Keys) und ist nach ~30 Sekunden per SSH erreichbar.
User-Data für erweiterte Konfiguration
Cloud-Init unterstützt umfangreiche Konfiguration über user-data. Erstellen Sie eine Datei:
nano /var/lib/vz/snippets/cloud-init-user.yaml
Beispiel user-data:
`#cloud-config
package_update: true
package_upgrade: true
packages:
- qemu-guest-agent
- git
- curl
- htop
runcmd: - systemctl enable --now qemu-guest-agent
- echo "Cloud-Init Setup abgeschlossen" > /root/cloud-init-done.txt
final_message: "VM ist fertig konfiguriert!"`
User-data an VM zuweisen:qm set 101 --cicustom "user=local:snippets/cloud-init-user.yaml"
Cloud-Init-Status prüfen
In der laufenden VM:cloud-init status – Zeigt: done, running, errorcloud-init logs – Detaillierte Logscat /var/log/cloud-init-output.log
FAQ
Kann ich Windows-VMs mit Cloud-Init erstellen?
Cloud-Init ist Linux-spezifisch. Für Windows gibt es Cloudbase-Init als Äquivalent, das ähnliche Funktionen für Windows bietet.
Wie oft wird Cloud-Init ausgeführt?
Standardmäßig nur einmal beim ersten Start (cloud-init run-once). Bei Templates muss der Cloud-Init-Status vor dem Klonen zurückgesetzt werden, was beim Klonen automatisch passiert.
Kann ich ein Template aktualisieren ohne alle Clones zu verlieren?
Nein, Template-Disk ist read-only. Erstellen Sie ein neues Template und migrieren Sie Clones bei Bedarf. Für regelmäßige Updates empfiehlt sich eine CI/CD-Pipeline mit automatischer Template-Erneuerung.
Fazit
Cloud-Init-Templates revolutionieren das VM-Deployment in Proxmox. Neue Server sind in unter einer Minute voll konfiguriert – ein entscheidender Vorteil für wachsende IT-Infrastrukturen.
Als DevOps-Spezialisten in Heidelberg automatisieren wir VM-Provisioning für KMU in Mannheim, Ludwigshafen und der Rhein-Neckar-Region. Jetzt Automatisierungsberatung anfragen.