Terraform-从yaml文件中读取对象列表



我想通过terraform代码从yaml文件中读取一个对象列表,并将其映射到一个局部变量。此外,我还需要使用关键字搜索对象,并从yaml文件中获取值。有人能提出合适的解决方案吗?

我的yaml文件如下所示。这里使用的将是主要密钥

list_details:
some_list:
- use: a
path: somepath
description : "some description"
- use: b
path: somepath2
description : "some description 2"

我已经在Terraform的变量部分加载了yaml文件,就像这个一样

locals {
list  = yamldecode(file("${path.module}/mylist.yaml"))
}

现在的问题是,我如何通过传递";使用";值添加到列表中?">

假设use值是唯一的,您可以将列表重新组织到映射中:

locals {
list_as_map = {for val in local.list["list_details"]["some_list"]:
val["use"] => val["path"]}
}

给出CCD_ 2为:

"a" = "somepath"
"b" = "somepath2"

然后根据use:的值访问path

path_for_a = local.list_as_map["a"]

更新

如果你想保留描述,最好这样做:

list_as_map = {for val in local.list["list_details"]["some_list"]:
val["use"] => {
path = val["path"]
description = val["description"]
}  
} 

然后访问pathdescription作为:

local.list_as_map["a"].path
local.list_as_map["a"].description

最新更新