Terraform has evolved significantly. If you're still writing Terraform the same way you did in 2023, you're leaving performance, safety, and maintainability on the table.
Here are 5 patterns I use on every engagement — from healthcare systems to defense contractors.
1. Provider-Defined Functions (Terraform 1.8+)
Stop writing complex locals blocks to transform data. Provider functions handle it natively:
# Before: messy regex in locals
locals {
account_id = regex("arn:aws:iam::(\\d+):", data.aws_caller_identity.current.arn)
}
# After: provider function
output "account_id" {
value = provider::aws::arn_parse(data.aws_caller_identity.current.arn).account_id
}
2. Ephemeral Resources for Secrets
Never store secrets in state again. Ephemeral resources exist only during the plan/apply cycle:
ephemeral "aws_secretsmanager_secret_version" "db_password" {
secret_id = aws_secretsmanager_secret.db.id
}
resource "aws_db_instance" "main" {
password = ephemeral.aws_secretsmanager_secret_version.db_password.secret_string
}
The password never touches your state file.
3. The moved Block for Safe Refactoring
Renaming resources used to mean destroy + recreate. The moved block handles it:
moved {
from = aws_instance.web_server
to = aws_instance.application_server
}
Zero downtime refactoring. I use this every time I restructure modules.
4. Native terraform test (1.6+)
Stop relying solely on terraform plan to validate. Write actual tests:
# tests/vpc.tftest.hcl
run "vpc_creates_successfully" {
command = apply
assert {
condition = aws_vpc.main.cidr_block == "10.0.0.0/16"
error_message = "VPC CIDR block is incorrect"
}
}
5. Stacks for Multi-Environment Orchestration
Terraform Stacks manage multiple configurations as a single unit — dev, staging, prod deployed together with dependency ordering.
This replaces the old pattern of separate terraform apply commands per environment with Terragrunt.
Want More?
I maintain a collection of 40+ production-ready DevOps pipeline resources — including Terraform module libraries, CI/CD templates, and IaC governance frameworks — at Citadel Cloud Management.
We also have 17 completely free cloud courses (no login, no paywall): Free Courses
Which of these patterns are you already using? Drop a comment below.
Top comments (0)