Terraformテンプレートの出力を別のTerraformテンプレートの入力に使用する方法はありますか?
例:ELBを作成するTerraformテンプレートがあり、ELB情報を入力変数として必要とする自動スケールグループを作成する別のTerraformテンプレートがあります。
Shellスクリプトを使用してgrep
を作成し、ELB情報をフィードできることはわかっていますが、これを行うためのTerraformの方法を探しています。
リモート状態を使用して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 は、モジュールを構造化する方法の良い例です。
Terraformの新しいバージョンでは、次のように出力変数にアクセスするように見えます
your_elb = "${data.terraform_remote_state.your_state.your_output_resource}"
残りはすべて同じで、どのように参照したかだけです。