Terraform - 从 yaml 文件中读取对象列表
Terraform- read list of objects from yaml file
我想通过 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”值传递给列表来获取一个对象及其值?
“
假设 use
个值是唯一的,您可以 re-organize 您的列表到地图中:
locals {
list_as_map = {for val in local.list["list_details"]["some_list"]:
val["use"] => val["path"]}
}
给出 list_as_map
为:
"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
我想通过 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”值传递给列表来获取一个对象及其值? “
假设 use
个值是唯一的,您可以 re-organize 您的列表到地图中:
locals {
list_as_map = {for val in local.list["list_details"]["some_list"]:
val["use"] => val["path"]}
}
给出 list_as_map
为:
"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