terraformのディレクトリ構成はどのようなものがベストプラクティスですか?

Terraformプロジェクトのディレクトリ構造は、プロジェクトの規模や複雑さに応じて異なります。ただし、以下のディレクトリ構造は、Terraformプロジェクトのベストプラクティスとして広く採用されています。

 

├── README.md
├── main.tf
├── variables.tf
├── outputs.tf
├── terraform.tfvars
├── backend.tf
├── providers.tf
├── modules/
├── environments/
│ ├── prod/
│ │ ├── main.tf
│ │ ├── variables.tf
│ │ ├── outputs.tf
│ │ ├── terraform.tfvars
│ │ ├── backend.tf
│ │ └── providers.tf
│ └── staging/
│   ├── main.tf
│   ├── variables.tf
│   ├── outputs.tf
│   ├── terraform.tfvars
│   ├── backend.tf
│   └── providers.tf
└── .terraform/

 

この構造には以下の要素が含まれます:

  • README.md: プロジェクトの概要と使用方法を説明するドキュメント。
  • main.tf: Terraformコードのメインのファイル。リソース、データソース、変数、出力などの定義が含まれる。
  • variables.tf: Terraform変数の定義ファイル。
  • outputs.tf: Terraformの出力値を定義するファイル。
  • terraform.tfvars: Terraformの変数値を設定するファイル。
  • backend.tf: Terraformのバックエンドを定義するファイル。
  • providers.tf: Terraformプロバイダの定義ファイル。
  • modules/: 再利用可能なモジュールのディレクトリ。
  • environments/: 環境ごとに異なる設定を定義するディレクトリ。
  • .terraform/: Terraformが生成するキャッシュやプラグインファイルが格納されるディレクトリ。

 

このディレクトリ構造に従うことで、Terraformプロジェクトを整理し、可読性とメンテナビリティを向上させることができます。

特に、環境ごとに異なる設定を定義する environments/ ディレクトリは、Terraformのベストプラクティスの1つであり、

環境に合わせた設定の変更や変更の差分管理を容易にするために役立ちます。

 

おすすめの記事