TL;DR
Terraform で、インフラの情報をモジュールの外に公開するための値。output ブロックで宣言する。
なぜ必要か
公式ドキュメントによると、出力値には次の使い道がある。
- 子モジュールのリソースの属性を、親モジュールに渡す
- ルートモジュールの値を CLI の出力に表示する
- 別の構成から、
terraform_remote_stateデータソースを通じてルートモジュールの出力値を読む - Terraform の操作の結果を、自動化のツールに渡す
仕組み
output ブロックの value に公開する値を書く。親モジュールは子モジュールの出力値を module.<CHILD_MODULE_NAME>.<OUTPUT_NAME> の形で参照する。
例
output "instance_id" {
description = "ID of the EC2 instance"
value = aws_instance.web.id
}注意点
sensitive = true を付けると CLI の出力では値が隠れるが、値はステートに保存される。terraform output に -json や -raw を付けると、平文で表示される。