Terraform Module Design Patterns
Reusable modules, versioning, and interface design for platform teams.
Terraform Module Design Patterns
Module types
| Type | Purpose | Example |
|---|---|---|
| Resource module | Single logical resource | terraform-aws-s3-bucket |
| Composition module | Product-ready stack | vpc-app-tier |
| Root module | Environment instance | prod/us-east-1/app |
Interface guidelines
- Expose minimal required variables; sensible defaults for optional
- Output IDs and ARNs consumers need not entire resource objects
- Document breaking changes in CHANGELOG; use semver tags
Example structure
modules/
networking/vpc/
compute/eks/
environments/
prod/
staging/CI checks
terraform fmt -check -recursive
terraform validate
tflint
checkov -d .Anti-patterns
terraform applyfrom laptops to production- Unpinned module sources (
ref=main) - Monolithic state for entire organization