【世界一わかりやすい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では一緒に働く仲間を募集中です。

ご興味のある方は以下の採用情報をご確認ください。