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