参考 : https://developer.hashicorp.com/terraform/language/values/outputs
Terraformのoutputsとは
出力値は、インフラストラクチャに関する情報をoutput
するための構文です。
コマンドライン、および他のテラフォーム構成の情報を公開し、他のテラフォーム構成などから使用できます。
出力値にはいくつかの用途があります。
- 子モジュールは
output
を使用して、親モジュールへリソース属性の情報を公開できます - ルートモジュールは
output
を使用して、後にCLIoutput
に特定の値を表示できます - リモートステートを使用する場合
このような場面で、Terraformによって管理されるリソースインスタンスの属性値は他の場所で使用できます。 出力値は、不要な情報を伏せたまま、必要な一部の情報を公開する方法です
出力値の定義
モジュールによってエクスポートされる各出力値は、output
を使用して宣言する必要があります。
output "instance_ip_addr" { value = aws_instance.server.private_ip }
output
キーワードの直後のラベルは出力値の名前です。
Terraformの実行時にはこの値は画面に表示されます。
また、子モジュールから、アクセスが可能になります。
この例では、 server
という名前がつけられたaws_instance
リソースによって公開されたprivate_ip属性を instance_ip_addr
として定義します。
親モジュールから子モジュールにアクセスする
親モジュールでは、子のモジュールのoutput
が式で利用可能です
例えば、instance_ip_addr
という名前のoutput
を宣言した場合、
親モジュールからはmodule.web_server.instance_ip_addr
として値が参照可能です。
オプション
output
ブロックには、オプションで、説明、敏感、および依存関係の引数を含めることができます。これらについては、次のセクションで説明します。
カスタム条件チェック
precondition
ブロックを使用して、output
データに関する保証を指定できます。
次の例は、EC2インスタンスが暗号化されたルートボリュームを持っているかどうかをチェックする前提条件を作成します。
output "api_base_url" { value = "https://${aws_instance.example.private_dns}:8433/" # The EC2 instance must have an encrypted root volume. precondition { condition = data.aws_ebs_volume.example.encrypted error_message = "The server's root volume is not encrypted." } }
カスタム条件は、将来のメンテナーが構成の設計と意図を理解するのに役立ちます。 また、エラーに関する有用な情報はコンテキストで返すことでデバッグがしやすくなります。
description
モジュールの出力値はユーザーインターフェイスの一部であるため、できるだけオプションの説明を使用して、各値の目的を簡単に説明してください
output "instance_ip_addr" { value = aws_instance.server.private_ip description = "The private IP address of the main server instance." }
sensitive
output
は、オプションを使用して機密性が高い情報を含むものとしてマークすることができます
output "db_password" { value = aws_db_instance.db.password description = "The password for logging in to the database." sensitive = true }
Terraformは、メッセージに敏感であるとマークされた値をterraform plan
とterraform apply
実行時に非表示にします。
https://developer.hashicorp.com/terraform/language/values/outputs
page:https://minegishirei.hatenablog.com/entry/2024/06/13/164400