# Root Terragrunt configuration # This enables DRY (Don't Repeat Yourself) configuration across environments # # Directory structure with Terragrunt: # live/ # ├── terragrunt.hcl (this file, copied to live/) # ├── prod/ # │ ├── env.hcl # │ ├── network/ # │ │ └── terragrunt.hcl # │ └── tenants/ # │ └── acme/ # │ └── terragrunt.hcl # ├── staging/ # │ └── ... # └── dev/ # └── ... locals { # Parse the file path to extract environment and component path_components = split("/", path_relative_to_include()) # Load environment-specific variables env_vars = read_terragrunt_config(find_in_parent_folders("env.hcl", "env.hcl")) # Common variables aws_region = local.env_vars.locals.aws_region environment = local.env_vars.locals.environment project_name = local.env_vars.locals.project_name # State bucket (from bootstrap) state_bucket = "${local.project_name}-terraform-state" lock_table = "${local.project_name}-terraform-locks" } # Generate provider configuration generate "provider" { path = "provider.tf" if_exists = "overwrite_terragrunt" contents = <