LoginSignup
2
2

Terraformのベストなディレクトリ構成

Last updated at Posted at 2023-12-18

Terraformのディレクトリ構成は色々あり、どれも長所短所ありますが、規模が大きくなってくるとある程度形が決まってきます。

私が良いと思うディレクトリ構成を紹介します。

①環境ごとにフォルダを分ける

一番多いのがこのパターンだと思います。ディレクトリ構成のベストプラクティスとして検索すると大抵これです。分かりやすいですよね。各環境フォルダに入ってterraformコマンドを叩きます。

root
  |--modules
  |--envs
      |--development
          |-- main.tf
          |-- outputs.tf
          |-- provider.tf
          |-- README.md
          |-- terraform.tf
          |-- variables.tf
          |-- README.md
      |--staging
          |-- main.tf
          |-- outputs.tf
          |-- provider.tf
          |-- README.md
          |-- terraform.tf
          |-- variables.tf
          |-- README.md
      |--production
          |-- main.tf
          |-- outputs.tf
          |-- provider.tf
          |-- README.md
          |-- terraform.tf
          |-- variables.tf

メリット

  • 分かりやすい
  • 文献が多い

デメリット

  • 環境ごとにファイルを作成するため差分が出てきやすい
  • 階層が(少し)深い

②環境ファイルで分ける

環境を丸々ディレクトリで分けるのではなく、環境変数のみを分けて、それを呼び出します。そのため、リソース名などが環境変数できっちり分離されます。

root
  |--main.tf
  |--outputs.tf
  |--provider.tf
  |--README.md
  |--terraform.tf
  |--variables.tf
  |--modules
  |--envs
      |--development
          |-- terraform.tfvars
          |-- backend.tfbackend
      |--staging
          |-- terraform.tfvars
          |-- backend.tfbackend
      |--production
          |-- terraform.tfvars
          |-- backend.tfbackend

メリット

  • root直下で実行可能(なので移動が楽)
  • 最低限の設定ファイルだけを各環境用のディレクトリにおけば良い

デメリット

  • コマンドが長くなる
  • 環境ごとに柔軟な構成を作ることが難しくなる
    • terraform init -backend-config=envs/development/backend.tfbackend
    • terraform plan -var-file=envs/development/terraform.tfvars

個人的な見解

特にこだわりがなければ、「①環境ごとにフォルダを分ける」にするのが良いと思います。ディレクトリごとに環境が分かれていて分かりやすかったり、Terraform Cloudで環境ごとにワークスペースを作成して実行できるからです。ただし、環境差分が出ないように注意しましょう。

また、Terragruntを利用するのもありですが、学習コストなどが発生するため周りと相談するのが良いです。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2