モジュール内のリソースIDに依存して、そのモジュールの出力として最初に定義することはできますか?terraformモジュール内のリソースへの依存関係を表現するには "出力"が必要ですか?
私は現在、トップレベルで定義された要素の束を持つテラフォームプロジェクトを持っています。私はかなり冗長なので(aws_security_group_rule
を使用すると)セキュリティグループをモジュールに入れました。実際には、プロジェクト内の他の場所にIDが必要なためです。
resource "aws_instance" "example_instance" {
# instance config goes here
vpc_security_group_ids = [
"${reference}",
]
}
などsecurity_groups
モジュール内の設定:
resource "aws_security_group" "example_group" {
# security group config goes here
}
最初のファイル内の参照は何もすることができ
だから、私は私のようなトップレベルのテラフォームファイルを持っている想像します"$ {module.security_groups.example_group.id}"のようなものですか?私が言うことができるように近く、答えはノー、私のようなエラーが取得されています
* module root:
resource 'aws_instance.example_instance' config:
aws_security_group.example_group.id is not a valid output for
module security_groups
をしかし、私はこれを明示的にどこにも文書化さ見つけていないので、私は私の理解を確認しようとしています。作品私は見つけることができる唯一の方法は、モジュールファイルにこのような何かを行うことです。
output "example_group_id" {
value = "${aws_security_group.example_group.id}"
}
そして、参照はこのように書きます:${module.security_groups.example_group_id}
は
だから、誰でも確認することができます(とドキュメントへの理想的なポイントそれは確かです)それは正しい方法で、出力を伴っていますか?または、代わりに出力なしでそれを行う方法を教えてください。
はい、それは明らかである、あなたは、それ以外の場合は、参照することができない、モジュールの設定出力を必要としています。 – BMW
はい。このモジュールは、呼び出し側のブラックボックスのようなものです。呼び出し元は出力変数のみを参照できます。 – fishi
@BMWそれはあなたには明らかです。私には分かりませんでした。私が見つけることができる唯一の場所は、「モジュールは独自の出力を指定することもできます。これらの出力は、たとえば設定の他の場所で参照することができます:」と書かれています。あなたは出力が必要ですが、私が実際に見つけることはできません。とにかく、あなたのどちらも答えを出していないのに、両方のあなたを確認してくれてありがとう、私はそれを受け入れることができません。 ;) –