Runbooks — Rack Management Platform
Complete, filled on-call runbooks (no placeholders), executable by anyone at 3 a.m. Format per
../RUNBOOKS-AND-OPS.md. Each is linked from its Phase 07 alert'srunbookannotation.
Runbook A: Fleet firmware rollout (BMC obmc-1.7.2 → 1.8.0)
- Trigger: a planned rollout ticket, or
firmware_version{component="bmc"}drift alert. - Goal: every node at the EBOM BMC baseline
obmc-1.8.0, zero fleet-wide bricks. - Owner / escalation: Rack SW on-call → Platform lead → Pegatron FW contact (
#pegatron-fw). - Risk: BMC is the riskiest target (brick → lose OOB); A/B + recovery path required (ADR-003).
Procedure
- Pre-checks: confirm artifact signed by
Platform keyand version ≥ anti-rollback floor (obmc-1.7.2); confirm A/B supported on target SKUs; confirm site artifact mirror is populated (air-gap).rackctl fw verify --image obmc-1.8.0.bin. - Canary (1 node): pick a node in a non-critical failure domain, drain it
(
kubectl drain <node> --ignore-daemonsets), update via the orchestrator (rackctl fw update --node <n> --image obmc-1.8.0), watch the Task to Completed, verify post-activation health (sensors nominal, PCIe at full width, attestation re-passes), uncordon. Bake 30 min. - Gate: check the canary's health/SLO panel — zero new crashes/AER, BMC reachable, attest OK. If regressed → STOP, rollback (step R), open an incident.
- Progressive waves: 1% → 10% → 50% → 100%, each wave failure-domain-aware (never a whole PDU/ToR at once), drain-first, gated as in step 3. Auto-halt + rollback on any wave regression.
- Verify fleet:
firmware_version{component="bmc"}shows 100% at1.8.0; no version-skew alerts.
(R) Rollback: rackctl fw rollback --node <n> switches the BMC to the previous A/B bank (the
prior 1.7.x) and reboots; confirm version + health. Halt the rollout; RCA (Phase 10).
Post: update node history; if a new failure mode appeared, write the RCA + add a pre-promotion check (Phase 11) + feed the defect to Pegatron (EBOM finding).
Runbook B: Node fails to POST after provisioning
- Trigger: provisioning stuck pre-OS, or
NodeNotReadywith the host unreachable in-band. - Goal: node POSTs and resumes provisioning, or is quarantined with a FRU verdict.
- Owner / escalation: Rack SW on-call → HW bring-up → Pegatron.
- Risk: single node; power actions are physical (dry-run/confirm).
Procedure
- Scope (Phase 01):
rackctl status --rack <rack>— are peers on the same PDU/ToR/CDU also down? If many → shared-resource incident (different runbook); this is for a single node. - Reach the BMC:
redfishtool -r <bmc> Systems get→ confirmPowerState. BMC unreachable → mgmt-network/BMC issue → escalate. - Why it didn't POST: read SEL + BERT for the last-boot error
(
ipmitool -I lanplus -H <bmc> -U <u> -P <p> sel list); watch live:ipmitool ... sol activate. - Physical signals (Phase 04): inlet/accel temps, PSU health, PCIe link width; CDU ΔT/leak — if leak, STOP → CDU-leak safety runbook.
- Reset once, watched:
redfishtool -r <bmc> Systems reset ForceRestart; watch SoL for the POST code. - Decide (Phase 08 tree):
- POSTs → resume provisioning; record the transient.
- RAS → a FRU (DIMM/accel/PSU) → cordon, schedule RMA, re-validate after swap.
- Firmware ≠ EBOM → re-flash to baseline (Runbook A path), retry.
- Quarantine if unresolved: mark
QUARANTINED(Phase 05 gate), file a ticket with SEL/BERT/RAS evidence; do not hand to tenants.
Post: update history; new failure mode → RCA (Phase 10) + an earlier-catching alert/test.
Runbook C: Coolant leak detected (safety-critical)
- Trigger: CDU
leak=1event (Phase 04/07) — highest priority. - Goal: protect hardware and people; minimize damage.
- Owner / escalation: Rack SW on-call → Facilities/DC ops immediately (parallel, not serial).
- Risk: liquid near live electronics — hardware loss + hazard.
Procedure (fail-safe, act first)
- Confirm + page facilities in parallel; do not wait for confirmation to start step 2.
- Reduce heat load: cap power on the affected rack's nodes (
rackctl power cap --rack <r> --watts <low>) and/or drain + graceful-shutdown non-critical nodes (Phase 06) to cut the thermal source. - Per policy/interlock: trigger the rack's emergency coolant action (drain/valve) if the platform owns it; otherwise hand to facilities.
- Do NOT power-on anything in the affected rack until facilities clears it (interlock).
- Capture evidence: CDU telemetry (flow/pressure/ΔT trend), timestamps, affected components.
Post: incident + blameless RCA; verify the leak interlock and the alert path worked; restore service only after facilities sign-off + re-validation (Phase 01 commissioning).