TF

Module Design & Reusability

Best practices for writing modular, reusable, and version-controlled Terraform code.

Details

Language / Topic
terraformTerraform
Category
Style Guide

Rules

balanced
- Build reusable modules mapped to standard architectural patterns rather than simple single-resource wrappers
- Pin exact versions of modules and providers in your consuming code (e.g., `version = "~> 3.0"`)
- Document module inputs, outputs, and requirements using `terraform-docs`
- Keep module logic declarative: avoid excessive `dynamic` blocks or complex `for_each` structures that make inputs confusing
- Use public registries or private git tags as module sources to lock upstream dependencies and prevent surprise breaking changes
- Group resources logically in standard files: `main.tf`, `variables.tf`, `outputs.tf`, `providers.tf`