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"]
                       }  
                 } 

然后您访问 pathdescription 作为:

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