我有以下terraform:
pre {
white-space: pre-wrap;
}
我在同一个文件夹中有一个terraform.tfstate文件:
data "terraform_remote_state" "stack" {
backend = "local"
config {
path = "terraform.tfstate"
}
}
output "diditwork" {
value = "${data.terraform_remote_state.stack.aws_autoscaling_group.main.id}"
}
但由于某些原因,当我执行 terraform apply 时,我的输出不会为自动缩放组ID 打印任何内容。申请成功,甚至不会抛出任何错误。 我缺少什么?
答案 0 :(得分:2)
这是错误的。
value = "${data.terraform_remote_state.stack.aws_autoscaling_group.main.id}"
您只能获取数据中的根级别输出。
https://www.terraform.io/docs/providers/terraform/d/remote_state.html#root-outputs-only
只能访问远程状态的根级别输出。 无法访问状态内模块的输出。如果你想 要通过远程状态访问的模块输出,必须进行线程化 输出到根输出。
因此,您首先需要输出自动缩放ID,例如:
output "asg_id" {
value = "${aws_autoscaling_group.main.id}"
}
然后在数据获取中,你会做,
output "diditwork" {
value = "${data.terraform_remote_state.stack.asg_id}"
}
此外,对于支持锁定的后端(或者您真正想要使用它的场景),在同一位置执行远程数据源通常是一个坏主意。我假设您只是为了实验而从同一位置进行远程数据源,所以没有造成任何损害,但在实际使用中,您应该只使用上面输出中使用的值。