【问题标题】:Terraform conditional iterationTerraform 条件迭代
【发布时间】:2021-12-27 08:56:50
【问题描述】:

我想用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
            }
       }
   ]
}

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

【问题讨论】:

  • 你能分享一下你的对象结构吗?
  • 什么是var.parameters
  • @akortex & @Marcin 我已经更新了帖子,并包含了var.parameters的内容

标签: amazon-web-services terraform terraform-provider-aws


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-09
    • 1970-01-01
    • 2020-08-11
    • 2021-12-08
    • 1970-01-01
    • 1970-01-01
    • 2022-11-07
    • 2022-01-01
    相关资源
    最近更新 更多