【世界一わかりやすいTerraform入門⑧】outputでつなぐ!モジュール活用とコード設計のコツ
投稿更新日: 2025/8/10

こんにちは!Terraform入門シリーズ、第8回です。 前回まででTerraformの基本操作、条件分岐、依存関係などをしっかり学びました。 今回はTerraformを**「チームで使いやすく・再利用しやすく」**するための設計力を高める内容です。
今回のテーマ
- output を使って値を外部に渡す方法
- モジュールの output を呼び出す方法
- 読みやすく、保守しやすいコード構造の作り方
1. output:リソースの値を外部に渡す
Terraformでは、リソースの属性などを output で出力して、別の場所で活用することができます。
✅ 基本的な使い方
# hcl output "bucket_name" { value = aws_s3_bucket.example.id }
terraform apply のあとに出力され、他のツール(CI/CDやスクリプト)からも取得可能です!
✅ 機密情報を出力する場合は sensitive = true
# hcl output "secret_value" { value = aws_secretsmanager_secret_version.example.secret_string sensitive = true }
これで、ターミナルに表示されず安全に扱えます。
2. モジュールの output を呼び出す
モジュールの中で output を定義すると、呼び出し元から値を取得できます。
▼ モジュール側(modules/s3/outputs.tf)
# hcl output "bucket_arn" { value = aws_s3_bucket.this.arn }
▼ 呼び出し元(main.tf)
# hcl module "my_s3" { source = "./modules/s3" bucket_name = "my-sample-bucket" } output "s3_arn" { value = module.my_s3.bucket_arn }
これで、モジュールから外部に値を引き出して利用できます!
3. 読みやすく使いやすいTerraformコード設計術
Terraformのコードは、構成次第で使いやすさ・保守性・スケーラビリティが激変します。
✅ 推奨ディレクトリ構成
terraform/
├── modules/ # 再利用部品
│ └── s3/
├── envs/
│ ├── dev/
│ │ ├── main.tf
│ │ ├── variables.tf
│ │ ├── outputs.tf
│ │ └── terraform.tfvars
│ └── prod/
modules/に共通ロジックを集約envs/で環境ごとに分離し、事故防止&管理性向上!
✅ 命名ルールとコメントも重要!
- リソース名:
project_env_resource_type - 変数名:明確で用途が分かるように
- モジュールには
README.mdを添えるのが親切!
まとめ:Terraformは「コード設計力」がカギ!
今回のまとめ:
outputを使ってリソース間・モジュール間の連携をスムーズに!- モジュールの
outputで再利用性・分離性アップ! - ディレクトリ・命名・コメントで読みやすく、チーム開発にも対応!
Terraformは「書ける」だけじゃなく、**「設計できる」**ことで本当の力を発揮します!
この記事をシェアする
合同会社raisexでは一緒に働く仲間を募集中です。
ご興味のある方は以下の採用情報をご確認ください。
