locals {
# default_values = read_terragrunt_config("${get_repo_root()}/default_values.hcl").locals
default_values = read_terragrunt_config("${get_repo_root()}/blueprints/01-terragrunt/default_values.hcl").locals
dir_levels = ["../../../../..", "../../../..", "../../../..", "../../..", "../..", "..", ".", ]
all_provider_configs = [for level in local.dir_levels : try(read_terragrunt_config("${get_original_terragrunt_dir()}/${level}/provider_config.hcl", "${get_repo_root()}/placeholder_config.hcl").locals, {})]
providers_config = merge(local.default_values, local.all_provider_configs...)
all_backend_configs = [for level in local.dir_levels : try(read_terragrunt_config("${get_original_terragrunt_dir()}/${level}/backend_config.hcl", "${get_repo_root()}/placeholder_config.hcl").locals, {})]
backend_config = merge(local.default_values, local.all_backend_configs...)
all_variables = [for level in local.dir_levels : try(read_terragrunt_config("${get_original_terragrunt_dir()}/${level}/variables.hcl", "${get_repo_root()}/placeholder_config.hcl").locals, {})]
}
inputs = merge(local.all_variables...)
# Generate versions block
generate "versions" {
path = "versions.tf"
if_exists = "overwrite"
disable = try(local.providers_config.generate_versions_disable, false)
contents = <<EOF
terraform {
required_version = "${local.providers_config.terraform_version}"
required_providers {
%{if try(local.providers_config.aws_provider_enable, false)}
aws = {
source = "${local.providers_config.aws_provider_source}"
version = "${local.providers_config.aws_provider_version}"
}
%{endif}
}
}
EOF
}
generate "providers" {
path = "providers.tf"
if_exists = "overwrite"
contents = <<EOF
%{if try(local.providers_config.aws_provider_enable, false)}
provider "aws" {
region = "${local.providers_config.aws_provider_region}"
}
%{endif}
EOF
}
remote_state {
backend = "s3"
generate = {
path = "backend.tf"
if_exists = "overwrite_terragrunt"
}
config = {
bucket = local.backend_config.backend_bucket
key = try(local.backend_config.backend_key, "${path_relative_to_include()}/terraform.tfstate")
region = local.backend_config.backend_region
encrypt = true
use_lockfile = true
kms_key_id = try(local.backend_config.backend_kms_key_id != "" ? local.backend_config.backend_kms_key_id : null, null)
}
}