Code Organization

This guide covers best practices for organizing Terraform code in a maintainable and scalable way.

Project Structure

Root Level Organization

β”œβ”€β”€ environments/
β”‚   β”œβ”€β”€ dev/
β”‚   β”œβ”€β”€ staging/
β”‚   └── prod/
β”œβ”€β”€ modules/
β”‚   β”œβ”€β”€ networking/
β”‚   β”œβ”€β”€ compute/
β”‚   └── database/
β”œβ”€β”€ templates/
└── scripts/

File Naming Conventions

Standard Files

β”œβ”€β”€ main.tf          # Primary configuration file
β”œβ”€β”€ variables.tf     # Input variables
β”œβ”€β”€ outputs.tf       # Output definitions
β”œβ”€β”€ versions.tf      # Required providers and versions
β”œβ”€β”€ locals.tf        # Local variables
└── terraform.tfvars # Variable values (git-ignored)

Module Structure

Module Organization

Module Interface Design

Code Style Guidelines

Naming Conventions

Resource Blocks

Workspaces Organization

Environment Separation

Variables Management

Variable Definition Structure

Documentation Standards

Module Documentation

Version Control

.gitignore Template

Code Review Guidelines

Pull Request Template

Testing Structure

Test Organization

Best Practices Checklist

Last updated