【世界一わかりやすいTerraform入門③】コードを部品化!モジュール・出力・便利技まとめ
投稿更新日: 2025/7/5

こんにちは!Terraform入門シリーズも第3回目に突入しました。 今回は、Terraformをもっと便利に、もっと効率よく使いこなすための「応用編」です!
テーマはこの3つ:
-
モジュール(module)を使ってコードを再利用!
-
出力値(output)を活用して情報を連携!
-
Terraformの便利コマンドやTipsを紹介!
1. モジュールの使い方:Terraformのレゴブロック
Terraformのモジュールは、よく使う構成を部品化するための仕組みです。 「同じようなS3バケットをいくつも作る」 「EC2 + セキュリティグループ + IAMのセットを量産したい」 そんなときに、モジュールが大活躍!
▼ フォルダ構成(例)
project/
├── main.tf
└── modules/
└── s3/
├── main.tf
├── variables.tf
└── outputs.tf
▼ モジュール側のコード(modules/s3/main.tf)
# hcl resource "aws_s3_bucket" "this" { bucket = var.bucket_name }
variables.tf
# hcl variable "bucket_name" { type = string }
▼ 呼び出し側(main.tf)
# hcl output "bucket_name" { value = aws_s3_bucket.this.id }
これで、何度でも呼び出せる再利用可能なパーツになります!
2. 出力値(output)の使い道
- モジュールで作ったリソースの情報を、あとで使いたいことってありますよね? たとえば「作ったS3バケットの名前を表示したい」「別のモジュールに値を渡したい」ときに便利なのがoutputです。
▼ 出力値の記述(outputs.tf)
# hcl output "bucket_name" { value = aws_s3_bucket.this.id }
terraform apply のあとに表示されます:
# bash Outputs: bucket_name = "modular-s3-bucket"
この値は他のモジュールから module.my_s3.bucket_name のように参照することもできます!
3. 変数でコードをスマートに!
最後に、Terraformをもっと快適に使うための小ワザ集を紹介します!
✅terraform fmt:コード整形
# bash terraform fmt
コードを自動で整えてくれるので、チームでの統一感もバッチリ。
✅terraform validate:構文チェック
# bash terraform validate
ファイルにミスがないかチェック。CIに組み込んでも◎
✅.terraformignore:不要ファイルを除外
.gitignoreと同じ要領で、Terraformが無視するファイルを指定できます。
✅terraform graph:依存関係を可視化(上級者向け)
# bash terraform graph | dot -Tsvg > graph.svg
リソース間の依存関係をグラフィカルに見ることができます!
まとめ:Terraform、もっと便利に!
今回のポイントを振り返ると…
- モジュールでコードを分割・再利用!
- 出力値で情報のやりとりもスマートに!
- 小技・コマンドでTerraform力アップ! Terraformは「書いて動かして壊す」だけじゃありません。整理整頓と工夫で、もっとかっこよく、もっと実用的に使えます!
この記事をシェアする
合同会社raisexでは一緒に働く仲間を募集中です。
ご興味のある方は以下の採用情報をご確認ください。
