Q: Your team used human-readable names as `for_each` keys, and renaming `prod-web` to `production-web` now wants to recreate resources. How do you avoid this?
Use stable, non-display keys for for_each, such as logical IDs that do not change when labels change. Keep the human-readable name as an ...
#Terraform #Use VPC ID from another module #L3 #IaC #Cloud Infrastructure #Terraform State
🎙️ Candidate Opening & Architectural Context
""Treat Terraform code with the same rigor as application code: pre-merge plans, state locks, and automated drift detection. When addressing this question, I walk the interviewer through our production incident runbook: isolating the blast radius, checking diagnostic logs and metrics, and applying a safe fix.""
Advertisement
🛠️ Production Runbook & Step-by-Step Resolution
1️⃣
Production Solution & Architecture
Use stable, non-display keys for for_each, such as logical IDs that do not change when labels change. Keep the human-readable name as an attribute inside the object. For an existing rename, use moved blocks or terraform state mv to map the old address to the new address before applying. The key is part of the Terraform resource address, so changing it is a state migration.
💡 The Senior SRE Gold Nugget (Key Architectural Takeaway)
"Pro-Tip: Use stable, non-display keys for for_each, such as logical IDs that do not change when labels change. Keep the human-readable name."
⚡ 60-Second Elevator Pitch Talking Points
- Immediate Triage: Use stable, non-display keys for for_each, such as logical IDs that do not change when labels c
- Run targeted verification commands before modifying configuration.
- Automate permanent guardrails (CI check, alerts, IaC policy) to prevent recurrence.
Advertisement