Terraform Development
Safety Rules
NEVER run without user confirmation:
terraform apply
terraform destroy
terraform import
ALWAYS run first:
terraform plan
terraform validate
Workflow
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā VALIDATE ā PLAN ā REVIEW ā APPLY ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
Step 1: Validate
terraform init
terraform validate
terraform fmt -check
Step 2: Plan
terraform plan -out=tfplan
Show plan to user and wait for confirmation.
Step 3: Apply (only after explicit approval)
terraform apply tfplan
Linting
# Format check
terraform fmt -check -recursive
# TFLint
tflint --recursive
# Checkov security scanning
checkov -d .
Project Structure
project/
āāā main.tf
āāā variables.tf
āāā outputs.tf
āāā versions.tf
āāā terraform.tfvars.example
āāā modules/
ā āāā module_name/
ā āāā main.tf
ā āāā variables.tf
ā āāā outputs.tf
āāā README.md
Pre-Apply Checklist
Terraform Checklist:
- [ ] terraform init completed
- [ ] terraform validate passed
- [ ] terraform fmt -check passed
- [ ] tflint passed (if available)
- [ ] terraform plan reviewed
- [ ] User confirmed changes
- [ ] Ready to apply
State Safety
- Never edit terraform.tfstate manually
- Always use
terraform state commands
- Back up state before imports
- Use remote state with locking
Scripts
Validate before plan:
~/.claude/skills/languages/terraform/scripts/plan-check.sh