Terragrunt works on top of Terraform. You still write your IaC in Terraform language and benefit from the Terraform CLI.
Why Terragrunt?
- Enforces best practices for Terraform configurations
- Simplifies remote state configuration and locking
- Promotes reuse of variables and modules
- Reduces code duplication with parent–child inheritance
Key Features
| Feature | Description |
|---|---|
| Hierarchical Configuration | Organize Terraform code in directories that reflect environments and regions. |
| Remote State Management | Automate backend setup (e.g., S3, Azure Blob, GCS) and enable state locking with DynamoDB or Consul. |
| Modular Variable Definitions | Define shared variables in one place and reference them across multiple modules and environments. |
| DRY (Don’t Repeat Yourself) | Inherit and override configurations in a parent–child folder structure to minimize duplication. |
Always enable state locking and encryption for your remote backend to prevent concurrent writes and protect sensitive data.

Common Use Cases
Terragrunt shines in scenarios where Terraform alone can become unwieldy:| Use Case | Benefit |
|---|---|
| Complex Infrastructure Projects | Simplifies management of interdependent modules, networks, and cloud resources. |
| Multi-Environment Deployments | Maintains consistency across dev, staging, and prod through shared remote state and variables. |
