Terraform地图来自目录中的文件



伙计们!

我的目标是将YAML文件中的配置收集(合并(到一个Terraform映射中。例如,我有以下2个YAML:

  • config/file1.yml
    section1:
    property11: value11
    property12: value12
    
  • config/file2.yml
    section2:
    property21: value21
    property22: value22
    

我需要的是如下所示的配置(为了可读性,下面用YAML表示,但当然应该是地形图(:

section1:
property11: value11
property12: value12
section2:
property21: value21
property22: value22

我现在想到的是:

locals {
config = { for yaml_file in fileset("${path.module}/config/", "*.yml"):
yaml_file => file("${path.module}/config/${yaml_file}"
}
}

但我不确定如何进一步推进。你能给我指个正确的方向吗。

您可以使用merge函数将yaml地图组合成一个地形地图。

locals {
base_path     = "${path.module}/config"
files         = fileset(local.base_path, "*.yml")
file_content  = [for f in local.files : yamldecode(file("${local.base_path}/${f}"))]
terraform_map = merge(local.file_content...)
yaml_output   = yamlencode(local.terraform_map)
}
output "result" {
value = local.file_content
}

最新更新