我想通过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"]
}
}
然后访问path
或description
作为:
local.list_as_map["a"].path
local.list_as_map["a"].description