考虑一个terraform模块:
module "blah-asg" {
source = "asg"
asg_max_size = 1
asg_min_size = "${var.min_blah}"
...
}
Run Code Online (Sandbox Code Playgroud)
我怎么output变量呢?
output "blah-es-asg" {
value = "${asg.blah-asg.arn}"
}
Run Code Online (Sandbox Code Playgroud)
哪个失败了
获取插件时出错:模块root:发生1个错误:*输出'blah-asg':变量asg.blah-asg.arn中引用的未知资源'asg.blah'
如何在Terraform中输出模块字段?
BMW*_*BMW 29
首先,您需要在模块中设置输出asg:
$ cat asg/output.tf
output "blah-es-asg" {
value = "${aws_autoscaling_group.blah-asg.arn}"
}
Run Code Online (Sandbox Code Playgroud)
然后你用以下方法调用模块source = "asg":
module "blah-asg" {
source = "asg"
asg_max_size = 1
asg_min_size = "${var.min_blah}"
...
}
Run Code Online (Sandbox Code Playgroud)
您现在可以使用以下格式在当前代码中输出它:
output "blah-es-asg" {
value = "${module.blah-asg.blah-es-asg}"
}
Run Code Online (Sandbox Code Playgroud)
模块本身不知道该名称blah-asg- 这只是在调用它的脚本中 - 事实上它可以使用不同的名称和参数多次调用。
输出应该只引用模块内的内容,就像在同一模块的其他地方一样。例如,如果您想输出以下资源的 arn:
resource "aws_lb" "test" {
# ...
}
Run Code Online (Sandbox Code Playgroud)
你会使用:
output "blah-es-asg" {
value = "${aws_lb.test.arn}"
}
Run Code Online (Sandbox Code Playgroud)
请注意,输出是与模块代码的其余部分一起定义的,而不是在调用它的脚本中定义的。
然后,调用模块的脚本可以使用此输出${module.blah-asg.blah-es-asg}
| 归档时间: |
|
| 查看次数: |
10343 次 |
| 最近记录: |