diff --git a/docs/changelog-20260723-stage4-open.md b/docs/changelog-20260723-stage4-open.md index 0f0c60f..6d243f6 100644 --- a/docs/changelog-20260723-stage4-open.md +++ b/docs/changelog-20260723-stage4-open.md @@ -137,3 +137,38 @@ auto-fabrics (or delete the 10 named fabrics after), move dynamic ranges back to .100-.200. Nodes were powered off throughout; no OS-level state exists to revert. + +## Item 7 -- Deploy-model ruling + DOCFIX-200 + jammy sync + placement tags + +- **RULING (operator: "Ready + jammy images (Recommended)"):** Stage 4 ends + with nodes READY + carved + tagged; MAAS-deploy is SKIPPED -- Juju + provisions Ready machines at Stage 5 and requests the bundle's + `default-base` (ubuntu@22.04). The phase3 runbook's Step 4 as written + (`maas machine deploy` per node) contradicted phase-01's own precondition + ("machines Ready/power=off") and would have made all 18 nodes + un-allocatable to Juju. [OPS -- encoded in the proven phase-01 precedent; + no D-number.] +- **DOCFIX-200:** `runbooks/dc-dc-phase3-maas-enlist-deploy.md` Step 4 + rewritten (tag + base-image sync, nodes STAY Ready; ruling quoted), + sequence table line + GATE "Nodes deployed" bullet corrected against + the buildout-design wording. +- **Jammy images:** boot-source selection id=2 (ubuntu/jammy amd64) created + on source 1 + import triggered; `ubuntu/jammy` reads Synced (re-verify at + close while sub-resources finish). +- **RULING (operator: "Adopt per-DC tags (Recommended)"):** deploy-placement + tags are region-qualified per-DC -- `openstack-vr1-dc0` / + `openstack-vr1-dc1` (D-119 naming), applied 9+9, add=9/remove=0 both. + Stage 5's per-DC bundle parameterization constrains on them. +- **RULING (operator: "Build the mirror now"):** the D-107 per-DC artifact + mirror gets BUILT in-stage (rehearsal exception REJECTED); Stage 4's + mirror gate bullet stays OPEN until it exists and nodes' reachability is + verified. Design presented as its own decision (D-135 candidate). +- Queued findings: `phase-00-maas-standup.sh`'s hardcoded PLANES table + asserts the VR0 VLAN-103 shape and would false-DRIFT against the ruled + D-133 flat carve (Step 8 satisfied instead by the spaces cross-check in + the carve capture); Step 7's edge-NTP check text is superseded by the + D-129(iv) ruling (MAAS hierarchy stays time authority; nodes measured + NTP-ing to their rack during Stage 3 commissioning). +- **Revert:** runbook edits `git revert`; tags + `maas admin tag update-nodes remove=...` x9 + tags delete; + boot-source-selection delete id=2 (images age out). diff --git a/runbooks/dc-dc-phase3-maas-enlist-deploy.md b/runbooks/dc-dc-phase3-maas-enlist-deploy.md index 4662c81..9d598a1 100644 --- a/runbooks/dc-dc-phase3-maas-enlist-deploy.md +++ b/runbooks/dc-dc-phase3-maas-enlist-deploy.md @@ -130,7 +130,7 @@ 1. DC selector lib_net_select_dc "$DC"; note lib_hosts_select_dc fails (read-only) 2. Discover find $DC's node VMs live in MAAS (read-only) 3. Commission per discovered node [MUTATION: gated] -4. Deploy per discovered node [MUTATION: gated] +4. Tag + base images nodes STAY Ready (DOCFIX-200) [MUTATION: gated] 5. Pattern A carve (adapted) per node, RAW provider NIC + VLAN-103 stack [MUTATION: gated] 6. PXE / boot-fabric verify confirm v4 PXE + fabric landing (read-only) 7. Mirror + NTP verify per-DC mirror reachable; edge NTP (read-only) @@ -262,35 +262,29 @@ --- -## Step 4 -- Deploy each node [MUTATION: gated, per node] +## Step 4 -- Tag each node; nodes STAY Ready (DOCFIX-200; NO MAAS deploy) -Do not pass a hardcoded `distro_series`/`osystem` -- no script in this repo -sets one (checked: `reenroll-hosts.sh`, `phase-00-maas-standup.sh`, and the -rest of `scripts/` are all silent on OS release, meaning DC0's own hosts -deploy off MAAS's region-level default). Confirm `$DC`'s rack/region default -live before deploying, rather than assuming it matches DC0's: +> **DOCFIX-200 (2026-07-23, operator-ruled at first execution).** This step +> originally instructed `maas machine deploy` per node. That CONTRADICTED the +> validated VR0 flow and would have BROKEN Stage 5: `phase-01-bundle-deploy.md`'s +> own precondition is machines "Ready/power=off; MAAS carve applied", and +> `juju deploy bundle.yaml` then provisions them itself -- Juju allocates READY +> MAAS machines and requests its own base (`default-base: ubuntu@22.04`); it +> cannot allocate an already-Deployed machine. Ruling (question: "skip +> MAAS-deploy ... and sync jammy images into the region now as the enabling +> step?"; operator answer: "Ready + jammy images (Recommended)"): Stage 4 ends +> with nodes READY + carved + tagged; the enabling mutation is syncing the +> bundle's base images into the region instead. -**CHECK -- MAAS's configured default OS release** +**RUN (once per region, not per node) -- ensure the bundle's base images are +synced.** The bundle's `default-base` (read it from `bundle.yaml`, do not +assume) must exist as a Synced boot resource before Stage 5: ```bash -maas "${MAAS_PROFILE:-admin}" maas get-config name=default_distro_series +maas "${MAAS_PROFILE:-admin}" boot-source-selections create 1 os=ubuntu release=jammy arches=amd64 subarches='*' labels='*' +maas "${MAAS_PROFILE:-admin}" boot-resources import +# poll until the release shows Synced: +maas "${MAAS_PROFILE:-admin}" boot-resources read | jq -r '.[] | select(.type=="Synced") | .name' | sort -u ``` -If `$DC` needs a different release than the default (a real design -decision, not assumed here), that override is itself a value to record and -justify, not silently pass. - -> CAUTION: deploy installs the OS and reboots the machine -- gated, one node -> at a time. - -**RUN -- per Ready node** -```bash -maas "${MAAS_PROFILE:-admin}" machine deploy -``` - -**VERIFY** -```bash -maas "${MAAS_PROFILE:-admin}" machine read | jq -r '.status_name' -``` -Expect `Deployed`. **Apply the deploy-placement tag** (phase-00 precedent: `reenroll-hosts.sh`'s "Apply MAAS tag ... (deploy placement prereq)" step -- without a tag the @@ -473,8 +467,11 @@ ## GATE (Stage 4 exit condition, per DC -- restated honestly from the buildout design) -Per `docs/dc-dc-buildout-design.md` Section 4 Phase 3: -- Nodes deployed (Steps 3-4: all discovered `$DC` nodes read `Deployed`). +Per `docs/dc-dc-buildout-design.md` Section 4 Phase 3 (its "Nodes deployed" +wording corrected by DOCFIX-200 -- deployment is Stage 5's `juju deploy`, per +the phase-01 precondition this stage hands off to): +- Nodes READY + carved + tagged; the bundle's base images Synced in the + region (Steps 3-4 as corrected). - The six planes present per node with correct fabrics/VLANs (Step 5's per-node GATE, Step 8's topology cross-check). - Provider NIC raw (Step 5 GATE: `enp1s0`/equivalent carries no config