Define OpenTofu/Terraform code once, no matter how many environments you have.
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
Set CLI arguments for repeatable OpenTofu/Terraform commands once in Terragrunt configuration.
Learn more
Run one command for all modules instead of executing it in each module independently.
Learn moreExecute 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", "."]
}
}