最近Terraformに入門してtfファイルを編集したりしていたのですが、tfstateファイルというものがある事を後から知りました。
最初この両者の違いがよく分からなかったのでまとめます
目次
tfファイル
- インフラストラクチャの定義を記述するファイルです
- HCL(Human-Readable Configuration Language)形式で記述されます
- リソースの作成・変更・削除の指示を含みます
- 人間が読み書き可能な形式です
tfstateファイル
- インフラストラクチャの現在の状態を記録するファイルです
- JSON形式で記述されます
- 実際に作成されたリソースの詳細情報を含みます
- Terraform内部で使用されるデータファイルです
主な違い
- 目的が異なる
- tfファイルは定義、tfstateファイルは状態記録
- 形式が異なる
- tfファイルはHCL、tfstateファイルはJSON
- 使用者が異なる
- tfファイルは人間が編集、tfstateファイルはTerraformが自動生成・更新
- 内容が異なる
- tfファイルは理想状態、tfstateファイルは実際の状態
tfファイルとtfstateファイルは互いに補完関係にあり、Terraformは両者の差分を比較して変更を検出します。
tfファイルを編集してterraform apply
を実行すると、tfstateファイルが更新されます。