amazon-web-services - Terraform 条件迭代
问题描述
我想创建一个dynamic
资源,for_each
我也想实现一个资源创建条件,但是由于某种我不明白的原因,资源创建条件没有按预期工作。
逻辑很简单:我有一个对象列表,每个对象都是资源,因此在每个对象中都有一个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 }
}
推荐阅读
- c# - WPF 直接绑定到 DataContext
- c++ - 从单例到嵌套侦听器没有可行的转换 *
- pytorch - Pytorch nn.embedding 错误
- python - 避免迭代太多时间 - 算法构建
- node.js - SyntaxError:在安装 SASS 节点包的严格模式之外尚不支持块范围的声明(let、const、函数、类)
- asp.net - 无法将文本框值返回到条件检查输入字符串的格式不正确
- rating - 产品标题下的星级评分错误
- ios - 导航控制器从今天扩展为 nil
- jquery - jQuery如何使用父母的数据属性来修改孩子的内容
- java - LibGdx 数组上的 Java NotSerializable 异常