伪代码:
module "foo-1" {
source="./foo"
input=1
}
module "foo-2" {
source="./foo"
input=2
}
module "foo-3"
source="./foo"
input=3
}
...etc...
(模块./foo根据输入值输出唯一的ID)
问题:
我希望能够任意实例化/调用./foo模块,并可以从每个模块实例访问唯一ID。我看不到使用Terraform做到这一点的方法,因为输出语法或者每个模块实例都需要唯一的val = expression。不幸的是(并不奇怪),不支持模块对象(module。*。id)上的Splat表达式。
我猜想这不可能在terraform中完成,但是很可能会出错。
答案 0 :(得分:0)
由于这些模块中的每个模块与Terraform的观点都是完全分开的,因此将其结果收集到一个值中将需要编写一个表达式来描述。例如:
locals {
foos = [
module.foo_1,
module.foo_2,
module.foo_3,
]
}
使用类似的定义,然后在模块的其他位置编写一个local.foos[*].id
之类的表达式,以收集所有模块中的所有ids
。