Proxmox · Debian-VM-Strategie (Cloud-Init)
Proxmox · Debian-VM-Strategie
Abstract:abstract: ZweckDebian-13-VMs auf Proxmox reproduzierbar aus einem Cloud-Init-Template bereitstellen. Dieses Dokument beschreibt den aktuellen CORESTREAM-Standard und verweist für den ausführbaren Stand auf das zentrale OneDev-Repo.
**Gültig für:** Debian 13 (trixie), Proxmox VE, UEFI/OVMF, qcow2-Images
Inhaltsverzeichnis
1.
- 1 · Standard und Entscheidung
2.
3.
4.
5.
6.
7.
8.
9.
10.
1 · Standard und Entscheidung
|
|---|---|---|
|
cloudinit
debian-13-generic-amd64.qcow2`qcow2
|
bake
debian-13-nocloud-amd64.qcow2`qcow2
Tip:tip: EmpfehlungFür neue Kunden-, Staging- und Infrastruktur-VMs immer
`cloudinit`cloudinitmit`--imgverwenden.genericcloud`genericcloud
Warning:warning: Image-Falle
`nocloud`nocloudenthält kein Cloud-Init. Der Skriptparameter`--imgverwendet im aktuellen CORESTREAM-Workflow die Dateigenericcloud`genericcloud`debian-13-generic-amd64..qcow2`qcow2
2 · Skripte installieren
Auf jedem neuen Proxmox-Host als `root`root:
curl -fsSL https://git.corestream.ch/corestream/proxmox-debian-cloudinit-scripts/~raw/master/install-on-proxmox.sh | bash
Fester Installationspfad:
-
/opt/corestream/proxmox-debian-cloudinit/build-debian-template.sh`sh
- `
/opt/corestream/proxmox-debian-cloudinit/clone-vm.sh`sh
Kommandos über Symlinks:
-
/usr/local/sbin/build-debian-template`template
- `
/usr/local/sbin/clone-vm`vm
>
Note:note:Der OneDev-Raw-Zugriff ist anonym als
`Codefreigegeben. Der Installer kann deshalb ohne Token ausgeführt werden.Reader`Reader
3 · Voraussetzungen vorbereiten
3.1 Pakete auf Proxmox
apt update
apt install -y libguestfs-tools wget curl
`qemu-guest- wird nicht für den Proxmox-Host benötigt. Das Build-Skript installiert und verifiziert das Paket innerhalb des Debian-Images.agent`agent
3.2 Storage und Debian-Image
pvesm status --enabled
mkdir -p /mnt/pve/<STORE>/import
cd /mnt/pve/<STORE>/import
wget -O debian-13-generic-amd64.qcow2 https://cloud.debian.org/images/cloud/trixie/latest/debian-13-generic-amd64.qcow2
wget -O SHA512SUMS https://cloud.debian.org/images/cloud/trixie/latest/SHA512SUMS
sha512sum -c --ignore-missing SHA512SUMS
Das Build-Skript trennt zwei Rollen:
-
/mnt/pve/<SOURCE_STORE>/import/`; bei mehreren NFS-Storages erscheint ein Auswahlmenü, alternativ --source-store `<STORE>.
- **
images; bei mehreren lokalen Zielen erscheint ein Auswahlmenü, alternativ --target-store `<STORE>.
Die VM-Disk, EFI-Disk und Cloud-Init-Disk liegen immer auf dem gewählten Zielstorage. NFS wird automatisch nicht als VM-Ziel angeboten.
3.3 Admin-Public-Key
Standardpfad:
test -s /root/.ssh/id_csgadmin.pub
Fehlt die Datei, einen vorhandenen Public-Key beim Build explizit übergeben:
build-debian-template -t 9000 -n debian13-init -m cloudinit --img genericcloud --user-key /root/.ssh/authorized_keys
>
Warning:warning:Bei
`--user-key /root/.ssh/werden alle dort enthaltenen Keys in die VM übernommen. Für genau einen Admin-Key eine dedizierte Public-Key-Datei verwenden.authorized_keys`authorized_keys
4 · Template bauen
Standard:
build-debian-template -t 9000 -n debian13-init -m cloudinit --img genericcloud
Mit expliziter Key-Datei:
build-debian-template -t 9000 -n debian13-init -m cloudinit --img genericcloud --user-key /pfad/admin.pub
Hermes-Zugriff nur auf ausdrücklichen Wunsch:
build-debian-template -t 9000 -n debian13-init -m cloudinit --img genericcloud --hermes --hermes-key /pfad/hermes.pub
Das Skript:
-
- kopiert das qcow2 pro Build nach
`/var/und verändert niemals das zentrale NFS-Basisimagetmp`tmp
-
-
qemu-guest-agent`agent, sudo und openssh-server`server
-
-
-
-
ipv6.disable=1`1
-
-
-
qm config`config
-
-
ciuser=csgadmin`csgadmin, SSH-Key und DHCP als Ausgangswert
-
Template-Konfiguration prüfen:
qm config 9000 | grep -E 'agent|scsi1|cloudinit|ciuser|boot'
Erwartet:
-
agent: 1`1 beziehungsweise enabled=1`1
- `scsi1`
scsi1 enthält cloudinit
- `
ciuser: csgadmin`csgadmin
-
scsi0;scsi1`scsi1
>
Important:important:Template niemals booten. Immer einen Clone zum Testen verwenden.
5 · VM klonen
Test-VM mit DHCP:
clone-vm 9000 901 test-debian dhcp
VM mit statischer IPv4-Adresse:
clone-vm 9000 121 app-staging 10.10.10.121/24 10.10.10.1
Der Clone-Helper:
-
- erstellt einen Full Clone
-
agent enabled=1`1
-
-
Für Throwaway-Tests kann bei Bedarf manuell ein Linked Clone erstellt werden. Kunden-, Staging-, Produktions- und Infrastruktur-VMs bleiben Full Clones.
6 · Verifikation
6.1 Im Gast
cloud-init status --long
id csgadmin
hostname
ip -4 a
ls -l /dev/disk/by-label/cidata
dpkg-query -W qemu-guest-agent
systemctl is-active qemu-guest-agent
sysctl net.ipv6.conf.all.disable_ipv6
cat /proc/cmdline
ip -6 addr
Erwartet:
-
- Cloud-Init:
`status:done`done
- `csgadmin`
csgadmin existiert
-
- `cidata`
cidata ist vorhanden
- `
qemu-guest-agent`agent ist installiert
-
active
- `
disable_ipv6 = 1`1
-
ipv6.disable=1`1
-
6.2 Auf Proxmox
qm agent <VMID> ping
SSH-Test:
ssh csgadmin@<IPv4>
7 · User und SSH-Zugriff
|
|---|---|---|---|
csgadmin
| `csgadmin` |
--user-key`key, standardmässig /root/.ssh/id_csgadmin.pub`pub
|
hermes
--hermes`hermes
--hermes-key`key, standardmässig /root/.ssh/id_ed25519.pub`pub
NOPASSWD:ALL`ALL, Passwort gesperrt
|
root
PermitRootLogin no`no
Zusätzlich gilt `PasswordAuthentication ; SSH-Zugriff erfolgt per Key.no`no
>
Important:important:Hermes ist opt-in. Der User wird nie automatisch angelegt.
8 · Goldene Regeln
1.
- Für Cloud-Init
`debian-13-generic-amd64.verwenden.qcow2`qcow2
2.
3.
scsi1.
4.
ci*` immer qm cloudinit update `<VMID>.
5.
6.
7.
8.
9 · Troubleshooting
|
|---|---|---|
| `
user pubkey missing`missing
--user-key `<datei> verwenden
|
storage ... does not support vm images`images
--target-store `<STORE> setzen
|
qm config `<VMID> prüfen, unbrauchbaren Teilbau gezielt löschen oder neue ID wählen
|
/var/tmp`tmp-Kopie
|
qm config`config, sshkeys, Key-Datei und qm cloudinit update`update prüfen
|
cloud-init: command not found`found
nocloud-Image verwendet
generic-amd64`amd64 neu bauen
|
cidata fehlt
scsi1 und qm cloudinit update`update prüfen
|
|
qemu-guest-agent`agent fehlt
|
qm agent <VMID> ping`ping scheitert
/dev/virtio-ports/` und qm config`config prüfen
|
|
10 · Source of Truth
>
Important:important:Ausführbarer Source of Truth ist OneDev, nicht ein eingebetteter Skriptblock in Obsidian.
-
corestream/proxmox-debian-cloudinit-scripts`scripts
-
ssh://git@git.corestream.ch:6611/corestream/proxmox-debian-cloudinit-scripts.git`git
-
https://git.corestream.ch/corestream/proxmox-debian-cloudinit-scripts/~raw/master/install-on-proxmox.sh`sh
-
/opt/corestream/proxmox-debian-cloudinit`cloudinit
Die früher eingebetteten Vollkopien der Skripte wurden bewusst entfernt, damit Dokumentation und ausführbarer Code nicht erneut auseinanderlaufen.
Verwandt: Staging- und Produktionskonzept
Quelle: Obsidian Knowledge Base/Proxmox/Proxmox Debian Cloud-Init Strategie.md · Stand: 2026-09-13 · Automatisiert publiziert durch Hermes.