Terraform 条件迭代

Terraform conditional iteration

我也想用 for_each 创建一个 dynamic 资源我想实现资源创建条件,但是出于某种我不明白的原因,资源创建条件没有按预期工作。

逻辑非常简单:我有一个对象列表,每个对象都是资源,因此在每个对象中都有一个 bool 变量,用于创建资源。

resource "aws_autoscaling_group" "aws_asg"  {
   for_each = { for key, value in var.parameters : key => value if flatten([ for x in var.parameters : x.init ]) }
}

flatten([ for x in var.parameters : x.init ])中的问题,资源获取第一个元素,而忽略下一个元素:

  + x = [
      + true,
      + false,
    ]

这里是var.parameters

   parameters = [
       # Runner 1
       {
            init    = true
            name    = "test-runner-1"

            scaling = {
                    desired     = 3
                    maximum     = 9
                    minimum     = 3
            }
       },

       # Runner 2
       {
            init    = false
            name    = "test-runner-2"

            scaling = {
                    desired     = 3
                    maximum     = 9
                    minimum     = 3
            }
       }
   ]
}

知道如何将每个布尔值映射到资源创建吗?

如果你想有条件地循环你的parameters,那么它应该是:

resource "aws_autoscaling_group" "aws_asg"  {
   for_each = { for key, value in var.parameters : key => value if value.init }
}