Sample Terraform project with best practice
terraform-project/
│
├── main.tf
├── variables.tf
├── outputs.tf
│
├── modules/
│ ├── example_module/
│ │ ├── main.tf
│ │ ├── variables.tf
│ │ └── outputs.tf
├── environments/
│ ├── prod/
│ │ ├── main.tf
│ │ ├── variables.tf
│ │ └── outputs.tf
│ │
│ └── dev/
│ ├── main.tf
│ ├── variables.tf
│ └── outputs.tf
│
├── providers.tf
├── terraform.tfvars
└── backend.tf
main.tf: Main configuration for the overall infrastructure.variables.tf: Declaration of variables used throughout the project.outputs.tf: Definition of output values to be extracted and used elsewhere.providers.tf: Provider configurations for AWS or any other providers.terraform.tfvars: Storage for non-sensitive variables or overrides default values.backend.tf: Specification of the backend configuration for remote state storage.
example_module/: The example module.
Each module contains:
main.tf: Configuration for that specific module.variables.tf: Module-specific variables.outputs.tf: Output values specific to that module.
prod/: Environment-specific configurations for production.dev/: Environment-specific configurations for development.
Each environment includes:
main.tf: Configuration specific to that environment.variables.tf: Environment-specific variables.outputs.tf: Environment-specific outputs.