terragrunt_way/terragrunt.hcl (50 lines of code) (raw):

# Configure Terragrunt to automatically store tfstate files in an S3 bucket remote_state { backend = "s3" generate = { path = "backend.tf" if_exists = "overwrite_terragrunt" } config = { bucket = local.common_vars.tf_state_bucket key = "${path_relative_to_include()}/terraform.tfstate" region = local.common_vars.region encrypt = true dynamodb_table = local.common_vars.tf_state_bucket } } # Generate an AWS provider block generate "provider" { path = "provider.tf" if_exists = "overwrite_terragrunt" contents = <<EOF provider "aws" { region = "${local.common_vars.region}" default_tags { tags = var.default_tags } } provider "aws" { alias = "east" region = "us-east-1" default_tags { tags = var.default_tags } } variable "default_tags" { type = map(string) description = "Default tags for AWS that will be attached to each resource." } EOF } locals { common_vars = yamldecode(file("common_vars.yml")) } inputs = { default_tags = { "Project" = local.common_vars.project "Team" = "DevOps", "DeployedBy" = "Terragrunt", "OwnerEmail" = "devops@example.com" } }