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 を付けると、平文で表示される。

関連

出典