Terraform:从模块输出字段 代码

Terraform:从模块输出字段 代码,terraform,Terraform,考虑一个地形模块: module "blah-asg" { source = "asg" asg_max_size = 1 asg_min_size = "${var.min_blah}" ... } 我的问题 如何从中提取变量 我试过什么 以失败告终 获取插件时出错:模块根目录:发生1个错误: *输出“blah asg”:变量asg.blah-asg.arn中引用的未知资源“asg.blah” 我的问题 如何在Terraform中输出模块字段?模块本

考虑一个地形模块:

module "blah-asg" {
  source = "asg"

  asg_max_size       = 1
  asg_min_size       = "${var.min_blah}"
  ...
}
我的问题 如何从中提取变量

我试过什么 以失败告终

获取插件时出错:模块根目录:发生1个错误: *输出“blah asg”:变量asg.blah-asg.arn中引用的未知资源“asg.blah”

我的问题
如何在Terraform中输出模块字段?

模块本身不知道名称
blah asg
-这只是在调用它的脚本中-实际上,可以使用不同的名称和参数多次调用它

输出应该只引用模块中的内容,就像您在同一模块中的其他地方一样。例如,如果要输出以下资源的arn:

resource "aws_lb" "test" {
  # ...
}
您可以使用:

output "blah-es-asg" {
    value = "${aws_lb.test.arn}"
}
请注意,输出是沿着模块代码的其余部分定义的,而不是在调用它的脚本中定义的


然后,调用模块的脚本可以使用此输出作为
${module.blah asg.blah es asg}

,因此首先,您需要在模块
asg
中设置输出:

$ cat asg/output.tf

output "blah-es-asg" {
    value = "${aws_autoscaling_group.blah-asg.arn}"
}
module "blah-asg" {
  source = "asg"

  asg_max_size       = 1
  asg_min_size       = "${var.min_blah}"
  ...
}
然后使用
source=“asg”
调用模块:

您现在可以使用以下格式以当前代码输出:

output "blah-es-asg" {
    value = "${module.blah-asg.blah-es-asg}"
}

这是非常有帮助的,应该是一个被接受的答案。It’这对你给出的解释和走查很有帮助。如果原始海报使用的东西比空话等更好,那就更清楚了。我花了一分钟才改变了现实生活。。但是谢谢你帮助别人!!!请考虑接受处理你的问题的帖子(只是一个友好的提醒)。
output "blah-es-asg" {
    value = "${module.blah-asg.blah-es-asg}"
}