Q: You have a Terraform configuration that manages resources in 3 AWS accounts. How do you structure this?
Use multiple provider configurations with aliases or split into multiple workspaces/modules:
#Terraform #State & Locking #L3 #IaC #Cloud Infrastructure #S3
🎙️ 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 multiple provider configurations with aliases or split into multiple workspaces/modules: Better approach at scale: separate Terraform root modules per account. Each module has its own state file, backend config, and runs independently. Avoid cross-account state dependencies — they create tight coupling. Use Terragrunt to DRY (Don't Repeat Yourself) across multiple root modules.
provider "aws" {
alias = "account-a"
assume_role {
role_arn = "arn:aws:iam::111111111:role/terraform"
}
}
provider "aws" {
alias = "account-b"
assume_role {
role_arn = "arn:aws:iam::222222222:role/terraform"
}
}
resource "aws_s3_bucket" "a" {
provider = aws.account-a
bucket = "my-bucket-a"
}
💡 The Senior SRE Gold Nugget (Key Architectural Takeaway)
"Pro-Tip: Use multiple provider configurations with aliases or split into multiple workspaces/modules:."
⚡ 60-Second Elevator Pitch Talking Points
- Immediate Triage: Use multiple provider configurations with aliases or split into multiple workspaces/modules:
- Run targeted verification commands before modifying configuration.
- Automate permanent guardrails (CI check, alerts, IaC policy) to prevent recurrence.
Advertisement