Zve*_*tko 4 module output terraform
可以使用一些即本地模块来返回相同的计算输出。但是如何传递一些参数呢?因此,每次您询问输出值时,您都会根据参数得到不同的值(即不同的前缀)
是否可以将资源传递给模块并使用标签对其进行增强?
我可以想象这两种情况更有可能是提供商的情况,但对于一些简单的情况它可能应该有效。最好的是他们实现了一些您可以随意调用的自定义函数。
原则上可以编写一个仅包含“命名值”的 Terraform 模块,这是三个模块功能的广义术语:输入变量(类似于函数参数)、局部值(类似于函数内的局部声明)和输出值(类似于返回值)。
这样的模块根本不包含任何resource或data块,因此将是“仅计算”模块,因此具有与函数式编程语言中的函数相同的所有功能。
variable "a" {
type = number
}
variable "b" {
type = number
}
locals {
sum = var.a + var.b
}
output "sum" {
value = local.sum
}
Run Code Online (Sandbox Code Playgroud)
上面的例子只是为了说明原理。这么简单的“函数”实际上并不需要本地 value local.sum,因为它的表达式可以直接写在 的值中output "sum",但我想在这里展示所有三个相关构造的示例。
您可以通过声明一个模块调用来“调用该函数”,该模块调用引用包含包含上述源代码的文件的目录:
module "example" {
source = "./modules/sum"
a = 1
b = 2
}
output "result" {
value = module.example.sum
}
Run Code Online (Sandbox Code Playgroud)
我output "result"在此处包含该块是为了展示如何在模块中的其他位置引用“函数”的结果,如module.example.sum.
当然,这种语法比典型的函数调用要“厚重”得多,因此在实践中,Terraform 模块作者只有在分解出的逻辑足够重要以证明其合理性时才会使用这种方法。module不过,除了冗长之外,如果您需要使用不同的参数集调用“函数”,您可以根据需要包含任意多个引用同一模块的块。对模块的每次调用都可以采用一组不同的输入变量值,因此会产生不同的结果。