1

伪代码:

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 中完成,但很想错。

4

1 回答 1

0

因为这些模块中的每一个都与 Terraform 的视角完全分开,所以要将它们的结果集中到一个值中,需要编写一个表达式来描述它。例如:

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

通过这样的定义,您可以在模块的其他地方编写一个表达式,例如local.foos[*].id收集所有ids模块中的所有内容。

于 2020-10-20T22:28:24.580 回答