Terraform:来自多个模块调用的输出

时间:2020-10-20 22:02:14

标签: terraform hcl

伪代码:

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中完成,但是很可能会出错。

1 个答案:

答案 0 :(得分:0)

由于这些模块中的每个模块与Terraform的观点都是完全分开的,因此将其结果收集到一个值中将需要编写一个表达式来描述。例如:

locals {
  foos = [
    module.foo_1,
    module.foo_2,
    module.foo_3,
  ]
}

使用类似的定义,然后在模块的其他位置编写一个local.foos[*].id之类的表达式,以收集所有模块中的所有ids