Terraform Advanced — Three-Tier Repo Structure
A proven repository structure for managing Terraform at scale.
The Three Repos
1. terraform-modules/ → Reusable modules (like libraries)
2. terraform-live/ → Environment-specific configs (like deployments)
3. terraform-platform/ → Company platform modules (opinionated wrappers)
Repo 1 — terraform-modules
terraform-modules/
├── modules/
│ ├── vpc/
│ │ ├── main.tf
│ │ ├── variables.tf
│ │ ├── outputs.tf
│ │ └── README.md
│ ├── ecs-service/
│ ├── rds/
│ └── s3-bucket/
└── README.md
- Tagged releases:
v1.0.0,v1.1.0,v2.0.0 - Consumed by
terraform-livevia version-pinned source
Repo 2 — terraform-live
terraform-live/
├── dev/
│ ├── us-east-1/
│ │ ├── networking/
│ │ │ ├── main.tf # source = "git::...?ref=v1.2.0"
│ │ │ ├── terraform.tfvars
│ │ │ └── backend.tf
│ │ └── app/
│ └── eu-west-1/
├── staging/
│ └── us-east-1/
└── prod/
└── us-east-1/
Repo 3 — terraform-platform
terraform-platform/
├── modules/
│ ├── standard-vpc/ # Wraps vpc module with company defaults
│ ├── standard-ecs-app/ # VPC + ALB + ECS + monitoring
│ └── standard-database/ # RDS + backups + alarms
Platform modules encode your company’s opinions: naming, tagging, security, monitoring.
What’s Next?
Isolate environments with separate AWS accounts.