Skip to content

Erstellung einer Cloud-Init Vorlage

Was wollen wir erreichen?

Wir wollen den Prozess der Erstellung von virtuellen Maschinen, der manuellen Installation entsprechender Distributionen weitestgehend vereinfachen. Dazu kommen sogenannte Cloud Images zum Einsatz. Wir wollen auf Basis der Cloud Images eine oder mehrere Vorlagen erstellen, sodass wir nur noch von der Vorlage eine virtuelle Maschine erzeugen.

Was wird benötigt?

  • Proxmox VE Server
  • Cloud Image (entweder Debian oder Ubuntu)
  • SSH Schlüsselpaar
  • Terminal

Durchführung

Vorbereitende Schritte

Auf dem Proxmox VE Host installieren wir die libguestfs-tools herunter. Diese nutzen wir, um das heruntergeladene Image zu editieren.

Paketquellen aktualisieren, Updates installieren und Installation von libguestfs-tools:

1
sudo apt update && sudo apt upgrade && sudo apt install libguestfs-tools -y

Wir benötigen nun ein Cloud Init Image von Debian oder Ubuntu. Dazu sind unterhalb Quellen angegeben!

Globales Debian Repository Debian Global Cloud Init repository Globales Ubuntu Repository Ubuntu Global Cloud Init repository Debian (Bookworm) Cloud Init latest Images Debian Cloud Images Repositories Ubuntu (Noble Numbat) Cloud Init latest Images Ubuntu Cloud Images Repositories

Wir suchen nach den folgenden Images: debian-12-generic-amd64.qcow2 ubuntu-24.04-server-cloudimg-amd64.img

Da wir nun wissen wo die benötigten Dateien liegen, verbinden wir uns auf den Proxmox Ve per SSh, wechseln in das entsprechende Verzeichnis und laden uns das Image herunter.

Verbindung per SSH mit dem Proxmox Server:

1
ssh root@172.31.42.242

Erstellung des benötigten Ordners (optional, falls noch nicht vorhanden):

1
mkdir -p /var/lib/vz/template/iso

Wechsel in das Verzeichnis:

1
cd /var/lib/vz/template/iso

Herunterladen des aktuellen Cloud Init Images:

1
wget https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2

Bearbeitung des Image

Im nächsten Schritt werden wir das Image bearbeiten, das wir neben dem Grundsystem ein paar Sachen, welche wir benötigen ändern. Dazu setzen wir verschiedene Tools aus dem heruntergeladenen Paket ein.

Passwort

Das Passwort ist absolut ungeeignet und wird nicht bei mir eingesetzt. Es dient als Platzhalter und sollte durch ein eigenes sicheres Kennwort ersetzt werden!

Wir werden dem Image die Guest Agents installieren, das root Passwort setzen und die Machine-ID zurücksetzen.

1
cd /var/lib/vz/template/iso

Installation des QEMU Guest Agent paket

1
2
3
virt-customize -a debian-12-generic-amd64.qcow2 --install qemu-guest-agent &&
virt-customize -a debian-12-generic-amd64.qcow2 --root-password password:Passwort123! &&
virt-customize -a debian-12-generic-amd64.qcow2 --run-command "echo -n > /etc/machine-id"

Erstellung der Vorlage mit Parametern

Abschließend erstellen wir die Vorlage in der Kommandozeile.

Erstellung der virtuellen Maschine mit VMID, Name, RAM, Cores und des Netzwerk

1
qm create 9001 --name "debian-12-ci" --memory 1024 --cores 1 --net0 virtio,bridge=vmbr0 &&

Wir importieren unser Image in die virtuelle Maschine

1
qm importdisk 9001 /var/lib/vz/template/iso/debian-12-generic-amd64.qcow2 local-lvm &&

Wir fügen das Image der Vorlage hinzu

1
qm set 9001 -scsihw virtio-scsi-single --scsi0 local-lvm:vm-9001-disk-0,cache=writeback,discard=on,ssd=1 &&

Wir setzen das Image als Boot Laufwerk

1
qm set 9001 --boot c -bootdisk scsi0 &&

Wir fügen das Cloud-Init System hinzu

1
qm set 9001 --scsi2 local-lvm:cloudinit &&

Wir aktivieren den Guest Agent

1
qm set 9001 --agent enabled=1 &&

Wir fügen dem Image Speicherplatz hinzu, da es standardmäßig nur 2 GB hat

1
qm resize 9001 scsi0 +30720M &&

Wir fügen eine grafische Ausgabe hinzu

1
2
qm set 9001 --serial0 socket &&
qm set 9001 --vga serial0 &&

Der CPU Typ und die Art des Betriebssystems wird hinzugefügt

1
2
qm set 9001 --cpu cputype=host &&
qm set 9001 --ostype l26 &&

Wir aktivieren die automatischen Updates

1
qm set 9001 --ciupgrade 1 &&

Wir erstellem einen User

1
qm set 9001 --ciuser ansible &&

Wir passen die Netzwerkkonfiguration an

1
2
3
qm set 9001 --ipconfig0 ip=dhcp &&
qm set 9001 --nameserver 192.168.110.61 &&
qm set 9001 --searchdomain pmx.local &&

Wir setzen den erstellten Public Key ein, damit wir ohne Passwort auf die VM zugreifen können

1
qm set 9001 --sshkeys /mnt/pve/cephfs/configs/authorized_keys &&

Wir erstellen unsere Vorlage

1
qm template 9001

Zeile 6 trifft nur bei ssd Laufwerken zu. hat man noch eine HDD im Einsatz lässt man die argumente "discard=on" und "ssd=1" weg.

Kommandoreferenz mit verschiedenen Optionen Kommandoreferenz

Die Vorlage kann nun mit einem Rechtsklick -> Clone zu einer vollwertigen VM erstellt werden. Idealerweise sollte man immer Full Clone erstellen.