Akash s
Akash s

Reputation: 127

is there a way to concat tuple in terraform?

variable "query_param" {
  type = list(string)
  default = [
    "hello",
    "one",
    "two"
  ]
}


locals {
  common_tags = flatten([
    for i in var.query_param: {
      "method.request.querystring.${i}" = false
    }

  ])
}

output name {
  value       = local.common_tags
  description = "description"
}

I have this code to iterate the variable(list) to locals (map). I got the below output which is not desired.

name = [
  {
    "method.request.querystring.hello" = false
  },
  {
    "method.request.querystring.one" = false
  },
  {
    "method.request.querystring.two" = false
  },
]

The desired output is getting all the values in a single array. As shown below.

name = [
  {
    "method.request.querystring.hello" = false,
    "method.request.querystring.one" = false,
    "method.request.querystring.two" = false
  }
]

Is there any way to achieve this?

Upvotes: 1

Views: 2583

Answers (1)

Ervin Szilagyi
Ervin Szilagyi

Reputation: 16815

I think you would want something like this:

locals {
  common_tags = {
    for i in var.query_param :
    "method.request.querystring.${i}" => false
  }
}

The output of the code above will be as follows:

name = {
  "method.request.querystring.hello" = false
  "method.request.querystring.one" = false
  "method.request.querystring.two" = false
}

Please note, the name itself is not an array in this case. If you want it to be, you can do the following:

locals {
  common_tags = [{
    for i in var.query_param :
    "method.request.querystring.${i}" => false
  }]
}

The output will be:

name = [
  {
    "method.request.querystring.hello" = false
    "method.request.querystring.one" = false
    "method.request.querystring.two" = false
  }
]

Upvotes: 3

Related Questions