Flatten terraform (HCL) object into a list

25 Views Asked by At

I have a list of object as such

secret_list = [
 { 
   secret1 = {}
   secret2 = {}
 },
 {
   secret3 = {}
 }
]

and i want to flatten this out so they become a list or map of 3 objects like:

secret_list = [
 { 
   secret1 = {}
 },
 {
   secret2 = {}
 },
 {
   secret3 = {}
 }
]
1

There are 1 best solutions below

0
Chris Doyle On

If all the keys across all the maps are unique you can use the solution in secret_list2. However if you have duplicate keys between maps then use the solution in secret_list3

locals {
  secret_list = [
    {
      secret1 = {}
      secret2 = {}
    },
    {
      secret3 = {}
    }
  ]
  secret_list2 = [for k, v in merge(local.secret_list...): {(k): v}]
  secret_list3 = flatten([for secret in local.secret_list: [for k, v in secret: {(k): v}]])
}

output "foo" {
  value = local.secret_list2
}

OUTPUT


Outputs:

foo = [
  {
    "secret1" = {}
  },
  {
    "secret2" = {}
  },
  {
    "secret3" = {}
  },
]