如何在地形中重构依赖变量描述



在编写地形模块时,通常会为依赖对象编写传递变量/输入。

如何编写变量,使描述/类型仅引用依赖描述?

我想象类似的东西

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"的输出值的任何子集匹配的属性的对象类型;第一个";

最新更新