Newer
Older
openstack-caracal-dc-dc / docs / changelog-20260709-dc-dc-phase0-runbook.md

Changelog 2026-07-09 -- Stage 1 runbook: Phase 0 vcloud host prep (DOCFIX-153)

No live infrastructure touched -- new runbook document only. Operator clarified this session runs from the workstation (not the vopenstack-jesse jumphost or the vcloud host); tonight's scope is prep so tomorrow morning's switch to the vcloud host can execute against real infrastructure immediately. This is the FIRST runbook that will be, since Stage 0 (ratification) is a decision-record exercise, not an infrastructure step.

Item

1. DOCFIX-153 -- runbooks/dc-dc-phase0-vcloud-prep.md

FILES: runbooks/dc-dc-phase0-vcloud-prep.md (new), docs/dc-dc-deployment- workflow.md (Stage 1 row + tracker table updated).

WHAT: command-level runbook for buildout-design Section 4's Phase 0 (turn the bare vcloud host into a substrate Office1 can deploy from), matching this repo's established runbook conventions (see runbooks/phase-00- teardown-maas-reset.md as the style template): a sequence table, read-only CHECK blocks before every mutation, each MUTATION individually gated, an explicit gate section at the end, and a delivery checklist.

Eleven steps: identify the target host + confirm libvirt reach; measure CPU/RAM/disk and CPU virtualization-extension support; measure host L2 MTU and record the D-101 MTU decision (jumbo vs. 1500-with-reduced-tenant-MTU) plus the Ceph size=3-vs-size=2 disk-budget plausibility check (Section 3's three Phase-0 gates); enable nested KVM if not already on; prepare libvirt storage pool paths for DC1 and Office1 (explicitly NOT DC2 -- no CIDRs assigned yet, gap #3's data half); install/confirm OpenTofu and registry reach; write a dc-dc-phase0.auto.tfvars file from the session's measured values (with maas_api_key explicitly kept OUT of any committed file, via TF_VAR_maas_api_key instead); tofu init/validate/fmt; tofu plan reviewed line-by-line against an explicit expected-resource list before tofu apply; post-apply verification against the Phase-0 gate criteria.

Genuine open question surfaced and flagged, not silently resolved: opentofu/main.tf declares the MAAS provider block unconditionally, even though this Phase-0 stage's plan only touches libvirt resources (planes, pools, mesh links) -- no MAAS resource is instantiated until Stage 3. It is not yet known whether tofu init/plan will demand real maas_api_url/maas_api_key values before Stage 2 has even stood up MAAS. The runbook documents both possible outcomes and what to do for each (placeholder values IF plan-time validation only checks non-null, vs. a logged structural finding -- splitting the MAAS provider into a Stage-3-only root module -- if OpenTofu actually attempts real connectivity at plan time with zero MAAS resources). This is exactly the kind of thing this runbook is supposed to catch by being read carefully before tomorrow's execution, rather than being discovered live.

Also flagged, not silently assumed: if the vcloud host tomorrow is the SAME physical host that ran the VR0/DC0 single-DC testcloud (buildout-design's own Ground Truth section implies this -- the "~256 vCPU/1 TiB/1 TiB disk dedicated to VR1" host is a repurposing, not a new machine), Step 5 tells the operator to check for an existing libvirt storage pool at any candidate path before creating DC1's pool there, to avoid a silent path collision with VR0's own pool.

VERIFIED: bash scripts/repo-lint.sh 0 fail, 1 documented legacy warn (unchanged -- prose-only addition, no script logic touched). This runbook itself is NOT YET EXECUTED -- that is tomorrow morning's work, per the operator's own plan; nothing in this delivery claims otherwise.

REVERT: rm runbooks/dc-dc-phase0-vcloud-prep.md && git checkout HEAD~ -- docs/dc-dc-deployment-workflow.md (safe -- no infrastructure has been touched by this delivery, purely a document).

Next actionable step

This runbook is the hand-off artifact for tomorrow morning's switch to the vcloud host. Stage 2 (Office1 headend standup) is the next runbook to draft tonight, continuing while the operator is away -- its content depends on Stage 1 actually having run (real libvirt reach, pool paths, MTU decision) only loosely; it can be drafted in parallel since MAAS-region/NetBox/ GitBucket/Tailscale standup on Office1 is a mostly independent set of steps once OpenTofu itself is confirmed working.