Files
proxdeploy/docs/issues/008-vm-ausrollen.md
florian.wildeandClaude Opus 5.5 9310164bc2 feat(ausrollen): VM ausrollen mit Assistent, Dry-Run und CLI-Befehl
Eine VM aus dem ProxDeploy-Template ausrollen, vollständig per API:
Klonen, Hardware, cloud-init, Start, Guest-Agent und Provisionierung der
Profile über den Agent – ohne SSH. Der Fortschritt kommt aus der
Logdatei im Gast, je Profil eine Marke.

Der Dry-Run läuft durch dieselben Phasen mit einem Trocken-Client und
zeigt jeden geplanten Proxmox-Aufruf und den passenden CLI-Befehl. Der
Assistent hat 9 Schritte, den Zustand in der URL und bietet an, ein
fehlendes Template im selben Auftrag zu bauen.

Auf pve-demo abgenommen: pd-test01 (base, docker) per API, pd-test02
(base, zabbix-agent) über den Assistenten, beide per SSH geprüft. Dabei
gefunden: file-write scheitert an Umlauten – Skripte gehen jetzt
base64-kodiert hinüber.

Closes #008

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 11:34:15 +02:00

2.2 KiB
Raw Permalink Blame History

#008 Deploy-Assistent und VM ausrollen

Status: erledigt Meilenstein: v0.2.0 Labels: feature Geschätzt: 10 h Tatsächlich: 0 h 36 min

Ziel

Debian-13-VM aus Template vollständig unattended, Assistent mit Dry-Run und CLI-Befehl.

Aufgaben

  • Anfrageschema für Web, CLI, Batch und Vorlagen (src/lib/schemas/ausrollen.ts), CLI-Befehl daraus
  • Ablauf VM: Prüfungen (Node, Template, Storage, Bridge/VLAN, VMID), Klonen (mit einem Wiederholversuch bei belegter VMID), Hardware + Disk vergrößern, cloud-init (sshkeys korrekt kodiert, ciupgrade=0), Start, Guest-Agent (ping, IP), Provisionierung per Agent mit Live-Fortschritt
  • Dry-Run über denselben Ablauf mit Trocken-Client: POST /api/v1/auftraege/plan
  • Fehlendes Template → „Template vorher bauen“ im Assistenten, läuft als Phase im selben Auftrag
  • Assistent mit 9 Schritten, Zustand in der URL, jederzeit zurückspringbar, Handy-tauglich
  • Aufräumen nach Bestätigung → folgt mit #014 (Verlauf); bis dahin werden angelegte VMIDs je Auftrag festgehalten

Akzeptanzkriterien

  • VM mit base-Profil per SSH erreichbar: pd-test01 (base, docker) per API, pd-test02 (base, zabbix-agent) über den Assistenten auf pve-demo, 2026-10-12
  • Fehlerfall zeigt Ursache + Hinweis (Tests: VLAN auf nicht VLAN-fähiger Bridge, Agent antwortet nicht, Profil scheitert mit Code)

Abhängigkeiten

#007

Notizen / Entscheidungen

  • Fund beim ersten echten Deploy: agent/file-write scheitert an Nicht-ASCII („Wide character in subroutine entry“). ProxDeploy kodiert die Skriptstücke jetzt selbst als base64 (encode=0) und teilt nach Bytes.
  • Die Agent-Endpunkte antworten unterschiedlich (exec → {pid}, exec-status/file-read direkt, ping/network-get-interfaces → {result}).
  • Fortschritt der Provisionierung aus der Logdatei im Gast (/var/log/proxdeploy-provisionierung.log, per file-read), Marken je Profil.
  • Klon auf anderen Node nur bei geteiltem Storage; sonst sagt die Prüfung, welchen Node man wählen soll.
  • Zwei Felder hießen „Server“ (Umschalter und Assistent) – der Umschalter heißt jetzt „Aktiver Server“.
  • Testgäste auf pve-demo: VM 100 pd-test01, VM 101 pd-test02 (Tag proxdeploy-test).