feat(terraform): linode-dr workspace (the DR target once production is on OVH) #190

Merged
jfraeys merged 1 commit from jfraeys/feat/linode-dr-workspace into main 2026-10-15 13:34:42 -04:00
Owner

Part of #187 (phase 6): production moves to OVH, so DR flips to Linode. This adds the Terraform half: linode-dr counts as DR (is_dr in locals.tf: no automatic DNS, environment=dr), the Linode module puts its nodes in the destroyable resource (no prevent_destroy, prod-identical names, vault root password, no staging image), terraform/environments/linode/dr.example.tfvars, and the setup help line. The existing linode and *-staging workspaces take the same code paths as before (is_ephemeral is false for linode, so nodes_prod keeps its for_each), but please run ./infra plan after merging and confirm production still shows no changes. tofu validate passes.

Not in this PR (phase 6, after the migration): inventory/dr_generated.yml still reads the ovh-dr workspace, docs/runbooks/datacenter-failover.md is still written Linode -> OVH, and the backup primary/secondary flip.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Ge5tovcwdEUBtPwUktsZZZ

Part of #187 (phase 6): production moves to OVH, so DR flips to Linode. This adds the Terraform half: `linode-dr` counts as DR (`is_dr` in locals.tf: no automatic DNS, environment=dr), the Linode module puts its nodes in the destroyable resource (no prevent_destroy, prod-identical names, vault root password, no staging image), `terraform/environments/linode/dr.example.tfvars`, and the `setup` help line. The existing `linode` and `*-staging` workspaces take the same code paths as before (`is_ephemeral` is false for `linode`, so `nodes_prod` keeps its for_each), but please run `./infra plan` after merging and confirm production still shows no changes. `tofu validate` passes. Not in this PR (phase 6, after the migration): `inventory/dr_generated.yml` still reads the `ovh-dr` workspace, `docs/runbooks/datacenter-failover.md` is still written Linode -> OVH, and the backup primary/secondary flip. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01Ge5tovcwdEUBtPwUktsZZZ
feat(terraform): linode-dr workspace (destroyable DR nodes), the DR target once production is on OVH
All checks were successful
Lint / lint (pull_request) Successful in 1m54s
Secret scan / scan (pull_request) Successful in 16s
67b4e9f7e2
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ge5tovcwdEUBtPwUktsZZZ
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
jfraeys/infra!190
No description provided.