Skip to main content

Terraform Module Design Patterns

Reusable modules, versioning, and interface design for platform teams.


Terraform Module Design Patterns

Module types

TypePurposeExample
Resource moduleSingle logical resourceterraform-aws-s3-bucket
Composition moduleProduct-ready stackvpc-app-tier
Root moduleEnvironment instanceprod/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 apply from laptops to production
  • Unpinned module sources (ref=main)
  • Monolithic state for entire organization