简体   繁体   中英

Terraform- read list of objects from yaml file

I want to read a list of objects from a yaml file via terraform code and map it to a local variable. Also i need search an object with a key and get the values from a yaml file. Can anyone suggest suitable solution?

my yaml file looks like below. Here use will be the primary key

list_details:
 some_list:
 - use: a
   path: somepath
   description : "some description"

 - use: b
   path: somepath2
   description : "some description 2"

I have loaded the yaml file in my variable section in Terraform like this

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

Now the problem is how I can get one object with its values by passing the "use" value to the list? "

Assuming that use values are unique, you can re-organize your list into map:

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

which gives list_as_map as:

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

then you access the path based on a value of use :

path_for_a = local.list_as_map["a"]

Update

If you want to keep description, its better to do:

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

then you access the path or description as:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM