Newer
Older
openstack-caracal-dc-dc / docs / changelog-20260717-d127-iac-autostart-and-guest-updates.md

2026-07-17 -- D-127 IaC autostart matrix (baked into the deploy tooling) + Office1 guest updates

Guest OS updates (agent-run via passwordless sudo INSIDE the guests)

The vcloud HOST + office1-opnsense stay in the operator's bookend restart; the already-deployed guests I have sudo inside were updated now:

  • office1-netbox (LXD): apt upgrade (9 pkgs, userland, no kernel) -- no reboot; netbox-docker stack unaffected + still healthy (HTTP 302).
  • office1-tailscale (LXD): apt full-upgrade (kernel 6.8.0-134 -> 6.8.0-136) + reboot; came back on the new kernel, tailscale online (100.64.0.53) re-advertising 10.10.0.0/22. Not the ProxyJump path, so safe.
  • voffice1: 0 upgradable -- nothing to do (so its load-bearing reboot risk was moot this round).
  • LXD boot.autostart=true set on both office1-netbox + office1-tailscale (D-127 non-host layer).

D-127 IaC autostart matrix (operator: bake it into the tooling so DC0/DC1 aren't missed at install)

Advisor-gated. Added an autostart bool var (default false) to modules/cloudinit-vm, modules/opnsense-edge, modules/node-vm, wired to libvirt_domain.autostart; set EXPLICITLY per instance (shared modules => IaC is the source of truth, else it fights the live layer):

instance root autostart why
voffice1 outer true foundational Office1 host
office1-opnsense outer true foundational edge (post-DOCFIX-188)
vvr1-dc0 outer false DC containment VM -- MANUAL, gated bring-up
vr1-dc0-opnsense inner true DC edge comes up with its container
node-vm (x9) inner false MAAS-power-controlled

HARD GATE verified: tofu plan shows the two EXISTING Office1 domains (voffice1, office1-opnsense) as autostart false->true update-in-place -- NOT replacement (replacement would destroy the live host/edge). vvr1-dc0 is a new create with autostart=false baked in. Outer plan is now 5 add / 2 in-place / 6 destroy; the 2 in-place collapse to 0 once the bookend sets those two autostart live before the fresh-session apply.

Drift guard: tests/opentofu-validate/run-tests.sh T11-T15 pin each matrix value (flipping vvr1-dc0/nodes to true -- auto-booting the 416 GiB nested container / MAAS nodes on host boot -- is the exact defect guarded). opentofu-validate clean; harness ALL PASS.

Standup runbook updated: the composed service VMs' boot.autostart is now a recorded install step (not a manual afterthought). DC0/DC1 create NO LXD instances (inner root = node-vm + opnsense-edge + planes/pool/wan-bridge), so the DC side is purely this VM matrix -- no DC-LXD gap.

Records

D-127 implementation updated (IaC layer DONE); readiness-doc plan line updated (5/2/6, collapses to 0); D-127 as-built already notes the netbox restart policy.

Verification

  • bash tests/opentofu-validate/run-tests.sh -> ALL PASS (incl. T11-T15 matrix pins).
  • bash scripts/opentofu-validate.sh -> clean (both roots + 12 modules).
  • tofu -chdir=opentofu plan -> 5 add / 2 in-place / 6 destroy; no forces-replacement on any existing.
  • bash scripts/repo-lint.sh -> 0 fail (1 legacy WARN).

Revert

  • git checkout opentofu/modules/{cloudinit-vm,opnsense-edge,node-vm}/{main,variables}.tf opentofu/main.tf opentofu/vr1-dc0-substrate/main.tf tests/opentofu-validate/run-tests.sh runbooks/dc-dc-phase1-office1-standup.md; drop the D-127 IaC-layer text. Live: sudo lxc config unset <inst> boot.autostart on voffice1. The guest apt upgrades are not repo state (OS state).