Commit Graph

  • 5d5fc5cb7c bastion: progress callbacks report the queue mac, not the first NIC main Michal 2026-10-20 01:27:05 +01:00
  • cd36825ad4 bastion: serve full-driver iPXE for UEFI x86_64, replace stale PV binaries Michal 2026-10-20 00:45:12 +01:00
  • bb0bca274c bastion image: pin ipxe-builder stage to the build platform Michal 2026-10-18 12:18:50 +01:00
  • f3f70c43ca CI: rerun release pipeline now that PACKAGES_TOKEN is set Michal 2026-10-14 23:58:20 +01:00
  • 1ee745dc08 CI: the artifact globs still said 'lab', the packages are 'labctl' Michal 2026-10-14 23:52:10 +01:00
  • 32d9b568ba Merge pull request 'Dedicated data disks: whole-disk longhorn/rancher volumes by stable by-id path' (#18) from feat/dedicated-data-disks into main michal 2026-10-14 22:47:02 +00:00
  • 6fe71eba63 thebeast runbook: VM drill passed, data copies done 2026-10-14 feat/dedicated-data-disks Michal 2026-10-14 23:31:15 +01:00
  • 745f9100c8 integration: LAB_TEST_SSH_KEY for a dedicated passphrase-less test key Michal 2026-10-14 23:10:31 +01:00
  • 8e00898c6f integration: post-mortem on SSH timeout (serial console + domstate), KEEP_VMS escape hatch Michal 2026-10-14 22:46:32 +01:00
  • 16659236f2 integration: VM drill for dedicated data disks Michal 2026-10-14 22:20:56 +01:00
  • b26733015f CI: the nfpm sed pointed at a binary name that no longer exists Michal 2026-10-14 19:18:41 +01:00
  • ddd80ce2ea CI: the runner image has no iproute2; the bastion smoke start needs ip route Michal 2026-10-14 19:14:35 +01:00
  • 88848f04ac smoke test: surface stderr when the bastion banner never appears Michal 2026-10-14 19:10:48 +01:00
  • 9bbaf2a385 CI: pykickstart comes from pip, not apt Michal 2026-10-14 19:07:21 +01:00
  • b15eabe191 CI: install the external test validators in the test job Michal 2026-10-14 19:04:39 +01:00
  • ee171a5f53 CI: pin pnpm from bastion/package.json and generate the Prisma client Michal 2026-10-14 19:01:13 +01:00
  • 66182c8cb8 dedicated data disks: whole-disk longhorn/rancher volumes, by stable by-id path Michal 2026-10-14 18:58:37 +01:00
  • 84836cb8f2 v2 partition schema: capability model, fixed sizing, and a proven rolling migration feat/v2-partition-schema Michal 2026-10-09 22:33:59 +01:00
  • c729275961 labsim: add IPv6 BGP config layer for the Gateway-API public-v6 rehearsal Michal 2026-09-10 01:23:03 +01:00
  • a4dcc9b379 labsim: rehearse the 3-server k3s dual-stack conversion -- and it answers the plan Michal 2026-09-09 14:38:50 +01:00
  • 97ae6dea89 labsim etcd harness: the real fix -- protect-kernel-defaults sysctls Michal 2026-09-08 11:07:51 +01:00
  • 2048515578 labsim etcd harness: etcd timer tuning for the constrained host + run notes Michal 2026-09-08 00:32:11 +01:00
  • fd38c05c3e labsim: 3-server embedded-etcd k3s harness, driven by the production generator Michal 2026-09-07 23:49:51 +01:00
  • 3ed2099083 labctl: export the k3s config generators + a render CLI Michal 2026-09-07 23:48:04 +01:00
  • ac8653f519 IPv6 addressing phase closed: all five nodes bound, aitopatom included Michal 2026-09-06 23:18:55 +01:00
  • 6c94371c8e provisioning: default new nodes to EUI-64 link-locals so DHCPv6 reservations match Michal 2026-09-06 23:07:39 +01:00
  • 7c2cbfaf31 ROOT CAUSE found: EUI-64 vs stable-privacy link-local, not arch or DUID Michal 2026-09-06 22:58:42 +01:00
  • 3e43385639 window 2026-09-06: final state + handoff note Michal 2026-09-06 22:51:32 +01:00
  • d9f74aa294 CORRECTION: MAC reservations DO work -- I measured too early and said otherwise Michal 2026-09-06 22:49:59 +01:00
  • c392bb9233 window: option (b) mac-sources has no VyOS knob; noted for the attended decision Michal 2026-09-06 22:37:23 +01:00
  • 3c933b96e0 VLAN 2 IPv6 applied to production: RA proven, MAC reservations do NOT match Michal 2026-09-06 22:36:47 +01:00
  • 5c9f004759 labsim: rehearse VLAN 2 IPv6, RA and DHCPv6 reservations before production sees it Michal 2026-09-06 17:11:33 +01:00
  • 914135c47d labctl: refuse to write a k3s config naming an IPv6 the node does not have Michal 2026-09-06 17:00:30 +01:00
  • a9ff182bd6 Ubuntu autoinstall emitted invalid YAML for every role -- and now asks for IPv6 Michal 2026-09-06 16:31:53 +01:00
  • 51bf300474 labctl: k3s config can carry both address families Michal 2026-09-06 16:24:27 +01:00
  • cb03987c33 The drill evidence was silently gitignored by *.log Michal 2026-09-06 15:22:09 +01:00
  • 8a0ef52909 The drill measured IPv6 through a failover: zero HE calls, and it followed Michal 2026-09-06 15:15:53 +01:00
  • da86b60dce IPv6 model merged: mark the staging record, and what the merge caught Michal 2026-09-06 15:07:40 +01:00
  • d0b733f831 IPv6 follows master, deployed: vyos002 has a tunnel and a gate that holds it shut Michal 2026-09-06 14:46:44 +01:00
  • 395577850c IPv6 was never HA, and the WAN becoming HA is what exposed it Michal 2026-09-06 14:30:44 +01:00
  • 061b9e3d7e Close the last two items: config.boot pinned, and an upgrade runbook Michal 2026-09-06 10:39:59 +01:00
  • bda5854563 vif53-pin-boot-disable: get disable into config.boot without losing the WAN Michal 2026-09-06 10:31:56 +01:00
  • d08f68e28b PPPOE-HA: step 8 done -- model merged, zero drift Michal 2026-09-06 09:42:12 +01:00
  • e1c571d004 PPPOE-HA: the drill closed the two biggest unknowns Michal 2026-09-06 09:38:20 +01:00
  • 47ce0c1aea wan-drill: run the failover drill unattended, because the operator goes offline Michal 2026-09-06 09:35:05 +01:00
  • 85819e40c1 wan-drill-watchdog: bound the blast radius of a failover drill Michal 2026-09-06 09:34:05 +01:00
  • 13dcdff1ef wan-panic: a one-command revert that works with no internet and no Claude Michal 2026-09-06 09:29:23 +01:00
  • 8aa3d0ebaa PPPOE-HA: record that vyos001's config.boot lacks vif 53 disable Michal 2026-09-06 01:27:07 +01:00
  • 8fce03e705 PPPOE-HA: deployed to production Michal 2026-09-06 01:26:38 +01:00
  • 5ed0e4888a labsim: both matrices green end to end, numbers reproduced Michal 2026-09-06 00:42:01 +01:00
  • 97efb5abb2 labsim: record the failover numbers and how they were nearly wrong Michal 2026-09-06 00:27:38 +01:00
  • 6987b324f1 vrrp-wan: size GRACE from the measured hostile failover, not the theory Michal 2026-09-06 00:25:00 +01:00
  • 9221c71ff0 labsim: the session-control matrix was never setting session-control Michal 2026-09-06 00:15:45 +01:00
  • 4d47b609a2 PPPOE-HA: record the two failure modes found by running the thing Michal 2026-09-06 00:11:32 +01:00
  • b659e0d47e vrrp-wan: a flap holdoff must not tear down a live WAN session Michal 2026-09-06 00:04:41 +01:00
  • d626750010 labsim: hard failover and reboot safety hold; runbook for the production apply Michal 2026-09-05 19:21:13 +01:00
  • 93fed7826b labsim: PPPoE HA passes the matrix, and the health check had a real flap bug Michal 2026-09-05 19:11:07 +01:00
  • 4efd70c987 vyos: move PPPoE off the config plane onto a gated systemd unit Michal 2026-09-05 18:50:16 +01:00
  • 2e828b8af2 vyos: a failover you can actually trigger, and four bugs found triggering it Michal 2026-09-02 23:27:17 +01:00
  • 7bf3f42e19 vyos: WAN follows VRRP mastership, rehearsed in labsim Michal 2026-09-02 18:02:58 +01:00
  • 09ede73b67 migration: the watcher that caught vyos002, and what it found Michal 2026-09-02 15:51:47 +01:00
  • a973b51b9c migration: vyos001 converted in production, and the config vyos002 needs first Michal 2026-09-02 15:26:21 +01:00
  • d727a50ca0 migration: offline recovery card, and stop the leak test trusting a silent router Michal 2026-09-02 14:30:35 +01:00
  • 0481c38e09 labsim: prove the tagged-Management fix for kea's wrong-pool offers Michal 2026-09-02 14:03:44 +01:00
  • 23783b8486 vyos: VRRP health check so the WAN and the gateway VIP cannot separate Michal 2026-09-02 11:39:44 +01:00
  • 11344eab92 labsim: the IPAM switch needs no pod recycle when the CIDR sources agree Michal 2026-08-24 23:20:16 +01:00
  • e8679f45b5 labsim: rehearse the IPAM switch on 3 nodes, and catch the trap in it Michal 2026-08-24 23:13:20 +01:00
  • 527e0798ae bastion/k3s: bootstrap new clusters with cluster-pool IPAM Michal 2026-08-24 22:59:55 +01:00
  • 842408c0d9 labsim: prove k3s CAN be converted to dual-stack in place Michal 2026-08-24 22:46:27 +01:00
  • ad6eb7a9a6 labsim: default-deny firewall policy, proven in the sim Michal 2026-08-22 22:25:55 +01:00
  • 7f551081ad labsim: capture BGP, dual WAN and both ISP VMs as code Michal 2026-08-22 16:26:36 +01:00
  • f41ffdd039 feat(vyos): reconciler that keeps the HE 6in4 tunnel on the live WAN Michal 2026-08-21 02:04:43 +01:00
  • a187703a3a feat(vyos): pin a known-good config and restore it with one command Michal 2026-08-21 01:46:43 +01:00
  • 86c2a36f00 feat(labsim): a real Kubernetes cluster for rehearsing Cilium <-> VyOS BGP Michal 2026-08-19 13:15:45 +01:00
  • 27a343bc75 Merge branch 'feat/unifi-export-and-vyos-dhcp': USG to VyOS migration Michal 2026-08-18 12:19:48 +01:00
  • 672b89ce38 feat(labctl): install VyOS from a Pulumi-rendered bundle, and enable its API Michal 2026-08-18 12:18:53 +01:00
  • f4984e3962 fix(vyos): health-check the 10 gig primary so failover actually fires Michal 2026-08-18 12:18:41 +01:00
  • 7b5331ddcd fix(migration): the backup has no WAN by design; stop failing it for that Michal 2026-08-18 01:48:48 +01:00
  • ce6911c196 fix(migration): require a working WAN, not every WAN Michal 2026-08-18 01:37:14 +01:00
  • 54b21fa9ff fix(migration): poll for WAN health instead of sampling once at 25s Michal 2026-08-18 01:10:50 +01:00
  • ff86a421f4 fix(labsim): console-apply must handle both VyOS prompts, not just $ Michal 2026-08-18 01:00:19 +01:00
  • ee070371a8 feat(labsim): add WAN transport VLANs so the sim can host fake ISPs Michal 2026-08-18 00:44:11 +01:00
  • 41b5448f56 feat(pulumi-vyos): prototype VyOS subtrees as Pulumi resources with commit-confirm Michal 2026-08-17 01:09:05 +01:00
  • 63061e6e7e feat(migration): peer link cabled and verified; conntrack-sync enabled in deltas Michal 2026-08-17 00:37:16 +01:00
  • ccdd1e7e49 fix(migration): both boxes carry WAN and NAT; the backup just holds it down Michal 2026-08-17 00:30:23 +01:00
  • 64e748ea94 test(labsim): conntrack-sync verified, and it exposed a delta defect Michal 2026-08-17 00:17:21 +01:00
  • bb654d83f8 test(labsim): second VyOS router proves DHCP active-passive HA Michal 2026-08-16 23:29:12 +01:00
  • 952f5c66e3 feat(migration): complete the VyOS HA stack per the official docs Michal 2026-08-16 22:48:39 +01:00
  • f81c94af43 feat(migration): dual WAN, cloned MAC, and the new 10.8.0.0/23 Private VLAN Michal 2026-08-16 18:16:25 +01:00
  • febe4b72bc chore(migration): all DNS through VyOS to Google, NAS out of the path Michal 2026-08-16 17:16:17 +01:00
  • 3768657b91 chore(migration): firewalls resolve via 8.8.8.8/8.8.4.4 Michal 2026-08-16 16:49:27 +01:00
  • 2a8fcb3bd3 fix(migration): the runbook pointed at addresses that die with the USG Michal 2026-08-16 16:25:04 +01:00
  • fc31013ceb fix(migration): apply the reviewed reservation plan, not a recomputed one Michal 2026-08-16 14:31:30 +01:00
  • b37cd79432 fix(migration): refuse an unprobeable delta instead of warning past it Michal 2026-08-16 00:13:19 +01:00
  • 7e464a2828 docs(migration): record what the rehearsal proved and what it could not Michal 2026-08-16 00:08:13 +01:00
  • 01a923352f fix(migration): do not emit a NAT translation port for a port list Michal 2026-08-16 00:02:21 +01:00
  • 7f5d3517a3 fix(migration): create the WAN vif before PPPoE references it Michal 2026-08-15 23:51:13 +01:00
  • d56bbf6db0 feat(migration): reversible USG->VyOS switch, proven on the sim Michal 2026-08-15 23:30:28 +01:00
  • 6c4318d3ae feat(migration): reserve every active client at its current address Michal 2026-08-15 23:07:07 +01:00
  • f36ff4c6e3 feat(migration): pin firewall management NICs and reserve them in UniFi Michal 2026-08-15 22:12:42 +01:00