terraform数据源远程状态不起作用

时间:2017-10-19 01:42:15

标签: terraform

我有以下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 打印任何内容。申请成功,甚至不会抛出任何错误。 我缺少什么

1 个答案:

答案 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}"
}

此外,对于支持锁定的后端(或者您真正想要使用它的场景),在同一位置执行远程数据源通常是一个坏主意。我假设您只是为了实验而从同一位置进行远程数据源,所以没有造成任何损害,但在实际使用中,您应该只使用上面输出中使用的值。