Kit Sunde
Kit Sunde

Reputation: 37055

How can combine the map values with terraform?

I've tried this:

variable "records" {
  type = "map"
  default = {
    "mediapop.co." = ["www.mediapop.co"],
    "mediapopinc.com." = ["mediapopinc.com", "www.mediapopinc.com"] ,
    "mediapop.sg." = ["mediapop.sg", "www.mediapop.sg"],
  }
}

output "records" {
  value = "${flatten(values(var.records))}"
}

but values() only allows for flat maps. Is there a workaround?

Upvotes: 0

Views: 3232

Answers (1)

Kit Sunde
Kit Sunde

Reputation: 37055

Using transpose:

output "transpose" {
  value = "${transpose(var.records))"
}

output "values" {
  value = "${keys(transpose(var.records)))"
}

outputs

transpose = {
  mediapop.sg = [mediapop.sg.]
  mediapopinc.com = [mediapopinc.com.]
  www.mediapop.co = [mediapop.co.]
  www.mediapop.sg = [mediapop.sg.]
  www.mediapopinc.com = [mediapopinc.com.]
}

values = [
    mediapop.sg,
    mediapopinc.com,
    www.mediapop.co,
    www.mediapop.sg,
    www.mediapopinc.com
]

Upvotes: 3

Related Questions