Terraformのサンプル集
2026-04-06
「詳解 Terraform 第3版」を読んでいる。
Terraformのナレッジとして使えそうな内容があったので、まとめてみる。
ディレクトリ構成例
- stage
- 本番直前(ステージング)用の環境(テスト用など)
- prod
- 本番用の環境(ユーザがアクセスするアプリケーションなど)
- mgmt
- DevOpsツール用の環境(踏み台サーバ、CIサーバなど)
- global
- 全環境をまたいで使用するリソースを入れる環境(S3、IAMなど)
/├─ 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├─ mgmt│ └─ vpc├─ services│ ├─ bastion-host│ └─ jenkins└─ global ├─ iam └─ s3ファイル名の規則例
dependencies.tf- データソースをすべて
dependencies.tfファイルに入れることで、コードが外部に依存している部分を分かりやすくする
- データソースをすべて
providers.tf- providerブロックを
providers.tfファイルに入れると、使用するプロバイダとどんな認証情報を提供する必要があるのかが一目でわかるようになります。
- providerブロックを
main-xxx.tf- リソースが増えて
main.tfファイルが非常に長くなってきたら、何らかの論理的な区別に従ってグループ分けして小さなファイルに分割してもよい。例えば、main-iam.tfがIAMリソースを、main-s3.tfはS3リソースなど。main-プレフィックスを使うと、アルファベット順にファイルが整理されている時にリソースがグループになるので、ファイルを見つけやすくなる。
- リソースが増えて
blog