【Terraform】tfstateファイルとtfファイルの違い

最近Terraformに入門してtfファイルを編集したりしていたのですが、tfstateファイルというものがある事を後から知りました。

最初この両者の違いがよく分からなかったのでまとめます

tfファイル

  • インフラストラクチャの定義を記述するファイルです
  • HCL(Human-Readable Configuration Language)形式で記述されます
  • リソースの作成・変更・削除の指示を含みます
  • 人間が読み書き可能な形式です

tfstateファイル

  • インフラストラクチャの現在の状態を記録するファイルです
  • JSON形式で記述されます
  • 実際に作成されたリソースの詳細情報を含みます
  • Terraform内部で使用されるデータファイルです

主な違い

  1. 目的が異なる
    • tfファイルは定義、tfstateファイルは状態記録
  1. 形式が異なる
    • tfファイルはHCL、tfstateファイルはJSON
  1. 使用者が異なる
    • tfファイルは人間が編集、tfstateファイルはTerraformが自動生成・更新
  1. 内容が異なる
    • tfファイルは理想状態、tfstateファイルは実際の状態

tfファイルとtfstateファイルは互いに補完関係にあり、Terraformは両者の差分を比較して変更を検出します。

tfファイルを編集してterraform applyを実行すると、tfstateファイルが更新されます。