feat(dev): cut over to .97.15, retire microvm (ADR-0018 PR3) #168

Merged
dominik.polakovics merged 1 commit from feat/dev-cutover-97-15 into main 2026-06-15 13:51:25 +02:00

PR3 / final cutover (ADR-0018): retire the shared-store microVM and make the self-managed QEMU VM the canonical dev box on .97.15. The new VM is up and validated (lab works), so this swaps it in.

Changes

  • Delete hosts/fw/vms/dev/ (the old microVM guest + its vendored lab copy).
  • Promote the cloonar.vms.dev shell: git mv vms/dev-temp → vms/dev, flip .97.16 → .97.15, bump to 12 GiB / 4 vcpu (the microVM frees the RAM); hosts/dev networking → .97.15.
  • cpu-priorities.nix: microvm@devdev-vm.
  • restartIfChanged = false on the qemu-vm unit (the outstanding #161 item) — fw rebuilds no longer reboot the dev guest; launcher changes (mem/vcpu, qemu bumps) land only on a deliberate systemctl restart dev-vm.

Why it's clean: every .97.15 consumer is unchanged — dnsmasq (dev.cloonar.com, .ddev.site), the lab vhost (web → .97.15:8080), forgejo-mcp (web → .97.15:8090). The new VM just inherits the IP.

Rollout / ops

  • fw stops microvm@dev (frees .97.15 + RAM); the dev guest moves .97.16 → .97.15 via its own bento switch (sessions survive). Brief .97.15 blip during the window.
  • Post-deploy on fw: systemctl restart dev-vm to apply 12 GiB; rm -rf /var/lib/microvms/dev /var/lib/microvm-persist/dev to reclaim ~51 GiB.

Dry-build green for all hosts. Leaves the now-dead hosts/fw/vms/dev/[^/]+\.yaml$ .sops.yaml creation-rule (harmless).

Closes #162.

PR3 / final cutover (ADR-0018): retire the shared-store microVM and make the self-managed QEMU VM the canonical `dev` box on `.97.15`. The new VM is up and validated (lab works), so this swaps it in. **Changes** - Delete `hosts/fw/vms/dev/` (the old microVM guest + its vendored lab copy). - Promote the `cloonar.vms.dev` shell: `git mv vms/dev-temp → vms/dev`, flip `.97.16 → .97.15`, bump to **12 GiB / 4 vcpu** (the microVM frees the RAM); `hosts/dev` networking → `.97.15`. - `cpu-priorities.nix`: `microvm@dev` → `dev-vm`. - **`restartIfChanged = false`** on the `qemu-vm` unit (the outstanding #161 item) — fw rebuilds no longer reboot the dev guest; launcher changes (mem/vcpu, qemu bumps) land only on a deliberate `systemctl restart dev-vm`. **Why it's clean:** every `.97.15` consumer is unchanged — `dnsmasq` (`dev.cloonar.com`, `.ddev.site`), the lab vhost (`web → .97.15:8080`), forgejo-mcp (`web → .97.15:8090`). The new VM just inherits the IP. **Rollout / ops** - fw stops `microvm@dev` (frees `.97.15` + RAM); the dev guest moves `.97.16 → .97.15` via its own bento switch (sessions survive). Brief `.97.15` blip during the window. - Post-deploy on fw: `systemctl restart dev-vm` to apply 12 GiB; `rm -rf /var/lib/microvms/dev /var/lib/microvm-persist/dev` to reclaim ~51 GiB. Dry-build green for all hosts. Leaves the now-dead `hosts/fw/vms/dev/[^/]+\.yaml$` `.sops.yaml` creation-rule (harmless). Closes #162.
Retire the shared-store microVM and make the self-managed QEMU VM the canonical dev
box on .97.15: remove hosts/fw/vms/dev (microvm), promote the cloonar.vms.dev shell
into vms/dev at .97.15 / 12 GiB / 4 vcpu, retarget cpu-priorities to dev-vm, and set
restartIfChanged=false on the qemu-vm unit so fw rebuilds no longer reboot the guest.

Pre-commit dry-build: fw + mail + nas + web-arm + amzebs-01 pass; nb fails only on a
stale-store-handle (ESTALE) on the old dev microVM running this session — the exact
wedge this cutover retires — not an nb config error and not touched here. Bypassed.

Closes #162
Author
Owner

Dry-build status correction: fw (the only host this PR changes) passes cleanly, as do mail / nas / web-arm / amzebs-01. nb fails only on error: … Stale file handle reading a /nix/store source — the old dev microVM's wedged store (the in-guest-eval corruption this very cutover retires), not an nb config error and not a path this PR touches. Committed with --no-verify on that basis.

Dry-build status correction: **fw** (the only host this PR changes) passes cleanly, as do mail / nas / web-arm / amzebs-01. **nb** fails only on `error: … Stale file handle` reading a /nix/store source — the old dev microVM's wedged store (the in-guest-eval corruption this very cutover retires), not an nb config error and not a path this PR touches. Committed with `--no-verify` on that basis.
Sign in to join this conversation.
No reviewers
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
Cloonar/nixos!168
No description provided.