VM images Phase C: PVE validation of a single VM (no template until proven good) #9

Open
opened 2026-06-17 22:26:16 +00:00 by hclaude · 0 comments
Owner

Part of #6. Phase C of the "mostly working" VM-image plan. Operator-driven (SysAdmin runs qm on a real PVE 9.1 host; not runnable from the build host).

Flow (NO templating until a known-good image exists)

  1. Pull the vm-images qcow2 from the registry onto the PVE host (direct curl/forgejo-curl GET — the generic registry has no HEAD, so the GUI "Query URL" 405s; use a direct GET).
  2. Run the emitted import-only install.sh → a stopped, non-template VM.
  3. GUI on that single VM directly: set the Cloud-Init tab (ciuser, SSH keys, ipconfig) → Start. (The image ships cloud-init NoCloud+eni, so it consumes whatever the GUI sets.)
  4. Validate, iterate on the qcow2 until the single VM is proven good.
  5. Only after a known-working image: convert to template + clone for real use. (Templating is explicitly OUT of the validation loop.)

Acceptance (per image: Devuan ECS01 + Debian-13)

  • Boots to serial login via qm terminal (ttyS0).
  • cloud-init applied hostname + SSH keys + network from the Cloud-Init drive (NoCloud/eni).
  • qm agent ping answers (qemu-guest-agent).
  • (informational, non-gating) chrony PHC: if host has modprobe ptp_kvm, cat /sys/class/ptp/ptp0/clock_name == KVM and chrony disciplines; otherwise documented as unsynchronised (no NTP fallback by design).

Likely fix rounds (feed back to #6 / Phase A)

cloud-init network render (eni), serial console primacy (VM-D5), guest-agent virtio port. Report qm output back; Phase A iterates.

Part of #6. Phase C of the "mostly working" VM-image plan. **Operator-driven** (SysAdmin runs `qm` on a real PVE 9.1 host; not runnable from the build host). ## Flow (NO templating until a known-good image exists) 1. Pull the `vm-images` qcow2 from the registry onto the PVE host (direct `curl`/`forgejo-curl` GET — the generic registry has no HEAD, so the GUI "Query URL" 405s; use a direct GET). 2. Run the emitted **import-only** `install.sh` → a **stopped, non-template** VM. 3. **GUI on that single VM directly:** set the Cloud-Init tab (ciuser, SSH keys, ipconfig) → Start. (The image ships cloud-init NoCloud+eni, so it consumes whatever the GUI sets.) 4. Validate, iterate on the qcow2 until the single VM is proven good. 5. **Only after a known-working image:** convert to template + clone for real use. (Templating is explicitly OUT of the validation loop.) ## Acceptance (per image: Devuan ECS01 + Debian-13) - [ ] Boots to **serial login** via `qm terminal` (ttyS0). - [ ] cloud-init applied **hostname + SSH keys + network** from the Cloud-Init drive (NoCloud/eni). - [ ] `qm agent ping` answers (qemu-guest-agent). - [ ] (informational, non-gating) chrony PHC: if host has `modprobe ptp_kvm`, `cat /sys/class/ptp/ptp0/clock_name` == `KVM` and chrony disciplines; otherwise documented as unsynchronised (no NTP fallback by design). ## Likely fix rounds (feed back to #6 / Phase A) cloud-init network render (eni), serial console primacy (VM-D5), guest-agent virtio port. Report `qm` output back; Phase A iterates.
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
ECS-Public-Infra/Create-Templates#9
No description provided.