Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

TELEICU/Disaster recovery playbook

From OHC Network Wiki
Revision as of 08:40, 6 July 2026 by Admin (talk | contribs) (Automated edit (via update-page on MediaWiki MCP Server))
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
playbookteleicuCARE 3.0+

Full recovery procedure for a major disaster affecting a region or the entire fleet.

Scope

This playbook covers:

  • Regional disaster (e.g., natural disaster taking out all sites in one state)
  • Control plane failure (all 3 CP VMs lost)
  • Fleet-wide configuration corruption

Scenario 1: Regional outage

All sites in one state are offline simultaneously.

Detection

  • VictoriaMetrics shows all nodes in the state as offline
  • Incident management system triggers P1 for the region
  • Hub admin for that state is contacted

Response

  1. Confirm scope — is it just that state or wider?
  2. Contact regional ISP/power authority for status
  3. For each site: follow Spoke unreachable runbook
  4. After recovery, verify all nodes rejoin the cluster
  5. Update TeleicuSites with current status

Scenario 2: Full control plane loss

All 3 CP VMs are destroyed.

Impact

  • K3s API server is down — no new deployments or pod scheduling
  • Existing agent nodes continue running existing workloads
  • No metrics or monitoring updates

Recovery

  1. Provision new CP VMs in cloud (same or different region)
  2. Restore etcd from the latest backup (Backup & restore)
  3. Start K3s server on restored etcd
  4. Agents re-register as they come online (Tailscale mesh brings them back)
  5. Verify full cluster health
  6. Restore monitoring stack (VictoriaMetrics + Grafana from backup)

Prevention

  • etcd backups to S3 in a separate geography
  • CP VMs in different availability zones if possible
  • Document CP provisioning in Infrastructure as Code (Terraform/OpenTofu)

Scenario 3: Fleet-wide config corruption

A bad configuration is applied across all nodes.

Ansible path

  1. Halt ansible-pull to prevent further convergence (disable cron/timer)
  2. Revert the offending commit in the git repo
  3. Carefully push the revert (may need per-wave rollout if the corruption is severe)
  4. For nodes that are broken: follow Node recovery runbook

NixOS path

  1. Each node can be rolled back individually: nixos-rebuild switch --rollback
  2. Or at boot: select a previous generation
  3. Fix the flake and push a corrected generation
  4. comin will apply the fix on next poll

Key advantage of NixOS: every node has the previous generation in its Nix store. Rollback does not depend on network access.