有什么方法可以将Terraform模板输出用于另一个Terraform模板的输入?
Ex:我有一个创建ELB的Terraform模板,我有另一个Terraform模板,它将创建一个需要ELB信息作为输入变量的自动缩放组。
我知道我可以使用shell脚本grep
并输入ELB信息,但我正在寻找一些Terraform方法来实现这一点。
答案 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}"
其余所有内容都一样,只是您引用的方式相同。