terraform-contour-mirror/live/prod/kafka-topics/terragrunt.hcl

62 lines
2.0 KiB
HCL

include "root" {
path = find_in_parent_folders()
}
include "env" {
path = find_in_parent_folders("env.hcl")
expose = true
merge_strategy = "deep"
}
locals {
repo_root = try(get_repo_root(), "${get_terragrunt_dir()}/../../..")
infra_config = yamldecode(file("${local.repo_root}/infrastructure.yaml"))
env_name = basename(dirname(get_terragrunt_dir()))
env_config = local.infra_config.environments[local.env_name]
kafka_topics = try(local.env_config.kafka.topics, [])
kafka_users = try(local.env_config.kafka.users, [])
kafka_cluster_refs = {
for ref, cfg in local.env_config.kafka_cluster_refs : ref => merge(cfg, {
cluster_id = startswith(tostring(cfg.cluster_id), "env:") ? get_env(trimprefix(tostring(cfg.cluster_id), "env:"), "") : tostring(cfg.cluster_id)
})
}
}
terraform {
source = "${get_terragrunt_dir()}/../../../modules//kafka-topics-yc"
}
generate "import_existing" {
path = "import_existing.tf"
if_exists = "overwrite"
contents = join("\n\n", [
for user in local.kafka_users : <<-EOF
import {
to = yandex_mdb_kafka_user.this["${user.clusterRef}:${user.name}"]
id = "${local.kafka_cluster_refs[user.clusterRef].cluster_id}:${user.name}"
}
EOF
if try(user.adopt, false)
])
}
inputs = {
environment = local.env_name
topics = local.kafka_topics
users = local.kafka_users
kafka_cluster_refs = local.kafka_cluster_refs
kafka_policy = local.env_config.kafka_policy
create_users = true
default_user_roles = ["ACCESS_ROLE_PRODUCER", "ACCESS_ROLE_CONSUMER"]
user_password_length = 32
yc_token = get_env("YC_TOKEN", "")
yc_service_account_key_file = get_env("YC_SERVICE_ACCOUNT_KEY_FILE", "")
yc_cloud_id = get_env("YC_CLOUD_ID", "")
yc_folder_id = get_env("YC_PROD_FOLDER_ID", get_env("YC_FOLDER_ID", ""))
kubeconfig_path = get_env("KUBECONFIG", "")
kube_context = get_env("KUBE_CONTEXT", "")
}