Proxmoxguide

Proxmox Cloud-Init Template erstellen – VMs in Sekunden klonen

Automatische VM-Provisionierung mit Cloud-Init in Proxmox VE

S
SeeColors IT
11. Juni 20264 Min. Lesezeit211 Aufrufe

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:

  1. VM-ISO herunterladen
  2. Betriebssystem 20+ Minuten installieren
  3. IP manuell konfigurieren
  4. SSH-Key manuell eintragen
  5. Pakete installieren

Mit Cloud-Init-Template:

  1. Template klonen (30 Sekunden)
  2. IP und Hostname in Proxmox eintragen
  3. 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

  1. Template (9000) auswählen → Clone
  2. Mode: Full Clone (eigenständige Kopie)
  3. Target Storage: Wählen Sie den Storage
  4. Name: z. B. webserver-01
  5. 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, error
cloud-init logs – Detaillierte Logs
cat /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.

Artikel teilen

War dieser Artikel hilfreich?

Dein Feedback hilft uns, bessere Inhalte zu erstellen.

Kommentar hinterlassen

Verwandte Artikel