terraform: Append to a list using concat

To be able to conditionally append objects (or strings) to a list in terraform we must put it in another way: How do we dynamically generate a list of objects?

The answer is using we can use the concat() function

result = concat(["A"], ["B"])

The concat() function will merge any set of lists. The trick here is to conditionally merge empty lists if needed to get the list we want, for example:

conditional_append = concat(var.set_a ? ["A"]:[], var.set_b ? ["A"]:[])

Using this code if we set:

set_a = false
set_b = false

We will get an empty array:

      ~ conditional_append = []

By setting one of them to true:

set_a = true
set_b = false

The resulting list will have just one item:

      ~ conditional_append = [
          + "A",
        ]

Finally, by setting both to true:

set_a = true
set_b = true

We will be getting both strings on a list as expected:

      ~ conditional_append = [
          + "A",
          + "B",
        ]

Posted on 24/12/2020

Categories