如何使用terraform输出作为另一个terraform模板的输入变量

时间:2017-01-11 16:52:51

标签: terraform

有什么方法可以将Terraform模板输出用于另一个Terraform模板的输入?

Ex:我有一个创建ELB的Terraform模板,我有另一个Terraform模板,它将创建一个需要ELB信息作为输入变量的自动缩放组。

我知道我可以使用shell脚本grep并输入ELB信息,但我正在寻找一些Terraform方法来实现这一点。

2 个答案:

答案 0 :(得分:5)

您是否尝试使用远程状态填充第二个模板?

声明如下:

resource "terraform_remote_state" "your_state" {
  backend = "s3"
  config {
    bucket = "${var.your_bucket}"
    region = "${var.your_region}"
    key = "${var.your_state_file}"
  }
}

然后你应该能够像这样直接提取你的资源:

your_elb = "${terraform_remote_state.your_state.output.your_output_resource}"

如果这对您不起作用,您是否尝试在模块中实现ELB然后只使用输出?

https://github.com/terraform-community-modules/tf_aws_elb是如何构建模块的一个很好的例子。

答案 1 :(得分:1)

看起来像在较新版本的Terraform中,您将像这样访问输出var

your_elb = "${data.terraform_remote_state.your_state.your_output_resource}"

其余所有内容都一样,只是您引用的方式相同。