web-dev-qa-db-ja.com

テラフォーム出力を別のテラフォームテンプレートの入力変数として使用する方法

Terraformテンプレートの出力を別のTerraformテンプレートの入力に使用する方法はありますか?

例:ELBを作成するTerraformテンプレートがあり、ELB情報を入力変数として必要とする自動スケールグループを作成する別のTerraformテンプレートがあります。

Shellスクリプトを使用してgrepを作成し、ELB情報をフィードできることはわかっていますが、これを行うためのTerraformの方法を探しています。

11
Joy

リモート状態を使用して2番目のテンプレートを入力してみましたか?

次のように宣言します。

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 は、モジュールを構造化する方法の良い例です。

6
mcheshier

Terraformの新しいバージョンでは、次のように出力変数にアクセスするように見えます

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

残りはすべて同じで、どのように参照したかだけです。

1
user10273842