diff --git a/docs/audit/stepD-vmhost-20260720.txt b/docs/audit/stepD-vmhost-20260720.txt index 7d8a36d..5f98731 100644 --- a/docs/audit/stepD-vmhost-20260720.txt +++ b/docs/audit/stepD-vmhost-20260720.txt @@ -6,3 +6,30 @@ on ../modules/maas-vm-host/main.tf line 30, in resource "maas_vm_host" "dc": 30: resource "maas_vm_host" "dc" { +power_address = "qemu+ssh://jessea123@172.31.0.2/system" +module.vr1_dc0_vm_host.maas_vm_host.dc: Creating... + +Error: ServerError: 503 Service Unavailable (Failed talking to pod: Failed to login to virsh console.) + + with module.vr1_dc0_vm_host.maas_vm_host.dc, + on ../modules/maas-vm-host/main.tf line 30, in resource "maas_vm_host" "dc": + 30: resource "maas_vm_host" "dc" { + + + maas_reported_memory = (known after apply) + + vm_host_id = (known after apply) +module.vr1_dc0_vm_host.maas_vm_host.dc: Creating... + +Error: ServerError: 400 Bad Request (Pod vr1-dc0-inner with type and parameters already exist.) + + with module.vr1_dc0_vm_host.maas_vm_host.dc, + on ../modules/maas-vm-host/main.tf line 30, in resource "maas_vm_host" "dc": + 30: resource "maas_vm_host" "dc" { + +module.vr1_dc0_vm_host.maas_vm_host.dc: Creating... + +Error: ServerError: 503 Service Unavailable (Failed talking to pod: Virsh command ['domblkinfo', 'vr1-dc0-compute-01', 'vda'] failed: internal error: missing storage backend for 'volume' storage) + + with module.vr1_dc0_vm_host.maas_vm_host.dc, + on ../modules/maas-vm-host/main.tf line 30, in resource "maas_vm_host" "dc": + 30: resource "maas_vm_host" "dc" { + diff --git a/docs/changelog-20260719-dc0-deploy-stepB.md b/docs/changelog-20260719-dc0-deploy-stepB.md index 2b6af51..4b056c4 100644 --- a/docs/changelog-20260719-dc0-deploy-stepB.md +++ b/docs/changelog-20260719-dc0-deploy-stepB.md @@ -590,6 +590,48 @@ - **Revert:** the failed apply created nothing (state empty); `git rm -r opentofu/vr1-dc0-maas` removes the root. +## 16. The pod path, chased to its end -- and a SECOND refutation: MAAS virsh +## pods are incompatible with this repo's node-vm disks + +Sequence, each step measured (operator ruled the DEDICATED key: "Dedicated +MAAS->libvirt key (Recommended)"): +1. Minted `maas-virsh_ed25519` on the rack (0600, SEC-009 folder), pubkey into + the rack user's authorized_keys, private half into the RACK's MAAS snap. + Rack snap could then `virsh -c qemu+ssh://...` fine -- **but the apply still + failed the same way.** +2. MEASURED why: MAAS attempts the pod connection from the **REGION**, not the + rack. voffice1's snap had no key and no known_hosts -> `Host key + verification failed`. Same key + keyscan installed there; region snap then + listed the inner domains. (Worth keeping: for a virsh pod, the credential + belongs wherever MAAS dials FROM, which is not necessarily the rack that + owns the hardware.) +3. Next apply hit `Pod vr1-dc0-inner ... already exist` -- the two earlier 503s + had EACH created a pod server-side before erroring, so MAAS held two broken + `cores=0` pods outside tofu state. Deleted both (own residue), re-applied. +4. Next apply reached the storage inventory and failed: + `Virsh command ['domblkinfo','vr1-dc0-compute-01','vda'] failed: internal + error: missing storage backend for 'volume' storage`. +- **ROOT CAUSE, reproduced LOCALLY on the rack** (so not a snap/SSH artifact): + `virsh domblkinfo vr1-dc0-compute-01 vda` fails identically at the console + with an ACTIVE, autostart pool. libvirtd cannot run domblkinfo against disks + declared as pool+volume references -- which is exactly how `modules/node-vm` + builds them. **MAAS virsh pods are therefore incompatible with this repo's + node-vm disk shape**; making the pod work would mean converting node-vm to + file-path disks and re-applying all nine domains. +- **BUT THE POD IS UNNECESSARY.** Its designed job (D-103) was DISCOVERY, and + discovery already happened via PXE enlistment. All MAAS still needs is + POWER. MEASURED, working: per-machine `power_type=virsh` + + `power_parameters_power_{address,id}` on the canary (`ace-oyster` = + `vr1-dc0-control-01`, matched by MAC) -> `maas admin machine + query-power-state` returns `{"state": "off"}`. No pod, no domblkinfo, no + module change, no touching nine live domains. +- Roosevelt note that makes this more than expedience: on bare metal each + machine carries its OWN power parameters (IPMI/BMC). Per-machine power is + the SHAPE Roosevelt uses; the virsh pod is a VR1-only convenience. So the + per-machine route is the smaller Roosevelt delta as well as the smaller + change here. +- Both routes are recorded for the operator's ruling; nothing further applied. + ## 8. STAGE-CLOSE QUEUE ITEM (operator directive, 2026-07-20): OPNsense 26.7 review - Operator directive (verbatim intent): at the proper time/place, review the