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

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