Hero

DRY and maintainable OpenTofu/Terraform code.

Terragrunt is a flexible orchestration tool that allows Infrastructure as Code to scale. Get Started
Shape

Key features

Keep your OpenTofu/Terraform code DRY

Keep your OpenTofu/Terraform code DRY

Define OpenTofu/Terraform code once, no matter how many environments you have.

Keep your OpenTofu/Terraform code DRY

Keep your backend DRY
Keep your backend DRY

Keep your backend configuration DRY

Get rid of duplicated backend code. Define how to manage your OpenTofu/Terraform state once in a root directory and inherit in all child modules.

Learn more

Keep your OpenTofu/Terraform CLI arguments DRY

Keep your OpenTofu/Terraform CLI arguments DRY

Set CLI arguments for repeatable OpenTofu/Terraform commands once in Terragrunt configuration.

Learn more
Keep your OpenTofu/Terraform CLI arguments DRY

Execute OpenTofu/Terraform commands on multiple modules at once Execute OpenTofu/Terraform commands on multiple modules at once

Execute OpenTofu/Terraform commands on multiple modules at once

Run one command for all modules instead of executing it in each module independently.

Learn more

Before & After hooks

Execute custom code before or after running OpenTofu/Terraform.

terraform {
  before_hook "before_hook_1" {
    commands = ["apply", "plan"]
    execute = ["echo", "Foo"]
    run_on_error = true
  }

  after_hook "after_hook_1" {
    commands = ["init-from-module"]
    execute = ["cp", "{get_parent_terragrunt_dir()}/foo.tf", "."]
  }
}

Built by Gruntwork

Your entire infrastructure. Defined as code. In about a day.

Explore Gruntwork.io shapes