2016-12-08 5 views
1

別の新しいモジュールの1つのモジュール変数にアクセスして、そのモジュールで作成されたawsインスタンスIDを取得し、モジュールで使用しようとしています。インスタンスID。すべてのモジュールが main.tf 変数と呼ばれているところから、構造が terraformの別のモジュールで1つのモジュールローカル変数を使用する

**Amodule #here this is used for creating kafka aws instances* 

    main.tf 
    kafkainstancevariables.tf 

Bmoduleが、これは

 main.tf 
    cloudwatchalertsforkafkainstancesVariables.tf 

外のモジュールはmainfileテラフォームこれらのカフカのインスタンスでアラームを作成するために使用される#here

以下のようなものです.tf ***

AmoduleでBmoduleで作成した変数にアクセスするにはどうすればよいですか?

ありがとうございました!

+0

これは基本的に[あなたが既に尋ねられた答えを受け入れた]と全く同じ質問です(自分だけにローカライズされています)(http://stackoverflow.com/q/41003986/2291321)。おそらくここでは何が違うでしょうか? – ydaetskcoR

+0

私はterraformを初めて使用しています。以前に尋ねられたものは、別のterraformスクリプトで1つのterraformスクリプトのインベントリを使用するのと同じです。ここでは、異なるモジュールを持つ1つのterraformスクリプトと、 terraformスクリプト – rocky

答えて

5

これを行うにはoutputsを使用できます。あなたは、そのアクセスできる

module "kafka" { 
    source = "./modules/kafka" 
} 

:あなたはのようなもので、モジュールをインスタンス化すると仮定しましょう、別のテラフォームファイルで

output "instance_ids" { 
    value = ["${aws_instance.kafka.*.id}"] 
} 

:あなたのカフカモジュールでは、次のようになります出力を定義することができます出力は次のよう:

instances = ["${module.kafka.instance_ids}"] 

をあなたのモジュールが(つまり、あなたのCloudWatchのモジュールは、あなたのカフカモジュールをインスタンス化しません)互いに分離されている場合は、あなたのように出力を渡すことができますモジュール間の変数:もちろん

module "kafka" { 
    source = "./modules/kafka" 
} 

module "cloudwatch" { 
    source = "./modules/cloudwatch" 
    instances = ["${module.kafka.instance_ids}"] 
} 

、あなたの "CloudWatchの" モジュールはinstancesvariableを宣言する必要があります。

出力をモジュールで使用する方法の詳細については、https://www.terraform.io/docs/modules/usage.html#outputsを参照してください。

+0

ありがとう、私はそれを正常に実装することができました。 – rocky

関連する問題