初めまして。あけましておめでとうございます。
DSOC R&D アーキテクトの鈴木賢志です。
Sansan Labs*1 では、新しい働き方の実現を目指し実験的な機能を一部公開しています。私は普段、それらの開発を中心に、R&D から生まれるサービスの品質改善などに取り組んでいます。
今回は、Sansan Labs で活用している Terraform のディレクトリ構成と、どのような理由でこの形になっていったかを紹介したいと思います。
Terraformのディレクトリ構成
Sansan Labs ではクラウドに AWS をメインで使用しており、昨年からインフラ構成管理のツールとして Terraform の利用を始めました。
初めて Terraform を使い始めた時に、最も悩んだのが .tf ファイルやディレクトリをどのように分けるか、という点でした。
これに対し色々考えた結果*2、以下のように落ち着きました。
terraform_project_root ├── env │ ├── dev │ │ └── main.tf │ └── prod │ └── main.tf └── modules ├── module_1 │ ├── main.tf │ ├── output.tf │ └── variables.tf ├── module_2 │ ├── main.tf │ ├── output.tf │ └── variables.tf ├── ...
簡単にまとめると Terraform の Module という、構成をテンプレート化して再利用できるようにする機能
を用いて、 環境ごとに分離したmain.tf
ファイルに、実際のインフラを表現していくといった戦略です。
*1:Sansan Webサービス内の右上にある、フラスコアイコンから利用できます。
*2:検討する上で一番はじめにヒットし参考にさせていただいたのは、クラスメソッド様のこちらの記事になります。ありがとうございます。