在编写地形模块时,通常会为依赖对象编写传递变量/输入。
如何编写变量,使描述/类型仅引用依赖描述?
我想象类似的东西
variable "foo" {
type = dependant.resource.foo.var.type
description = dependant.resource.foo.var.description
default = "module default"
}
变量描述是Terraform本身使用的元数据(特别是:由Terraform Registry等文档机制使用(,对模块代码来说是不可见的数据。
每个模块的输入变量和输出值必须完全独立。Terraform Registry等机制依赖于此,因此它们能够仅通过引用某个模块来生成该模块的文档,而无需获取和分析任何其他模块或其他依赖项。
如果你确实想要一个变量;通过";对于子模块或资源配置,则需要在模块中重新声明其类型和描述。
我还建议考虑文档部分中的建议何时编写模块;直接将变量传递给子对象并不一定是错误的,但这可能是由于模块没有提高抽象级别,因此没有通过那里描述的测试。
在这种情况下,最好使用模块组合而不是嵌套模块。
在这种情况下,这意味着模块的调用方将自己调用当前正在包装的另一个模块。您的模块不会将其他模块的输入变量作为自己的输入变量,而是声明接受其他模块的输出值作为其输入,这样调用方就可以将表示第一个模块结果的对象传递到第二个模块:
module "first" {
# ...
}
module "second" {
# ...
first = module.first
}
在这个";第二个";则输入变量first
将被声明为需要具有与"0"的输出值的任何子集匹配的属性的对象类型;第一个";