Terraform概要
・Terraformは、HashiCorpが提供するIaC(Infrastructure as Code)ツール
・AWSをはじめとしたさまざまなクラウドサービスのインフラ構築をコードで管理できる。
・初学者なりに、AWS CloudFormation(CFn)との違いを中心に備忘録としてまとめる。
CloudFormation(CFn)との主な違い
1. スタックという概念がない
CFnは「スタック」という単位でリソースをまとめて管理する。
だけど、Terraformにはその概念がない。
Terraformはディレクトリ内のファイル全体をひとまとめの構成として扱うのが基本。
2. リソースごとにファイルを分けて管理できる
Terraformでは、リソース定義を複数ファイルに分割して記述できる。
実行時はフォルダ内のすべての.tfファイルを一括で読み取り、まとめてapplyされる仕組み。
- 必要であれば、特定リソースだけを対象に
-targetオプションでapplyすることも可能。
3. 変数を別ファイルに切り出せる
Terraformはvariables.tfやterraform.tfvarsのように変数定義をファイルとして独立させることができる。
構成の管理や環境ごとの切り替えがしやすい点が特徴。
4. ドライラン(事前確認)が簡単
Terraformのplanコマンドを使えば、実際にapplyしたときに何が変更されるかを簡単に確認できる。
- CFnでもできなくはないものの、Terraformのほうが手軽で直感的。
5. コードのフォーマットが標準搭載
terraform fmtを実行するだけで、コードを自動整形できます。可読性の向上やチームメンバー間の書き方の統一に役立つらしい。
まとめ
Terraformは、
- ファイルを自由に分割できて管理がしやすい
- 変数化や事前確認がしやすい
- コード整形機能も標準搭載
など、開発者にとって扱いやすいポイントが多い。
CloudFormationと比較すると、より柔軟でコード管理しやすいIaCツールとして人気がある、という印象らしい。
初学者のため、間違えていたらすいません。