How to use terraform output as input variable of another terraform template

非 Y 不嫁゛ 提交于 2020-02-20 07:16:11

问题


Is there any way I can use a Terraform template output to another Terraform template's input?

Ex: I have a Terraform template which creates an ELB and I have another Terraform template which is going to create an auto scale group which need the ELB information as an input variable.

I know I can use shell script to grep and feed in the ELB information, but I'm looking for some Terraform way to doing this.


回答1:


Have you tried using remote state to populate your second template?

Declare it like this:

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

And then you should be able to pull out your resource directly like this:

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

If this doesn't work for you, have you tried implementing your ELB in a module and then just using the output?

https://github.com/terraform-community-modules/tf_aws_elb is a good example of how to structure the module.




回答2:


Looks like in newer versions of Terraform you'd access the output var like this

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

All the rest is the same, just how you referenced it.



来源:https://stackoverflow.com/questions/41596412/how-to-use-terraform-output-as-input-variable-of-another-terraform-template

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!