Logoblog

Terraformのサンプル集

2026-05-06


「詳解 Terraform 第3版」を読んでいる。

Terraformのナレッジとして使えそうな内容があったので、まとめてみる。

ディレクトリ構成例

  • stage
    • 本番直前(ステージング)用の環境(テスト用など)
  • prod
    • 本番用の環境(ユーザがアクセスするアプリケーションなど)
  • mgmt(management)
    • DevOpsツール用の環境(踏み台サーバ、CIサーバなど)
  • global
    • 全環境をまたいで使用するリソースを入れる環境(S3、IAMなど)
Terminal window
/
├─ stage
│ ├─ vpc
│ ├─ services
│ │ ├─ frontend-app
│ │ └─ backend-app
│ │ ├─ variables.tf
│ │ ├─ outputs.tf
│ │ └─ main.tf
│ └─ data-storage
│ ├─ mysql
│ └─ redis
├─ prod
│ ├─ vpc
│ ├─ services
│ │ ├─ frontend-app
│ │ └─ backend-app
│ └─ data-storage
│ ├─ mysql
│ └─ redis
├─ management
│ ├─ vpc
│ └─ services
│ ├─ bastion-host
│ └─ jenkins
└─ global
├─ iam
└─ s3

ファイル名の規則例

  • dependencies.tf
    • データソースをすべてdependencies.tfファイルに入れることで、コードが外部に依存している部分を分かりやすくする
  • providers.tf
    • providerブロックをproviders.tfファイルに入れると、使用するプロバイダとどんな認証情報を提供する必要があるのかが一目でわかるようになります。
  • main-xxx.tf
    • リソースが増えてmain.tfファイルが非常に長くなってきたら、何らかの論理的な区別に従ってグループ分けして小さなファイルに分割してもよい。例えば、main-iam.tfがIAMリソースを、main-s3.tfはS3リソースなど。main-プレフィックスを使うと、アルファベット順にファイルが整理されている時にリソースがグループになるので、ファイルを見つけやすくなる。