TL;DR
Terraform が、管理するインフラと設定の対応を記録したデータ。既定ではローカルの terraform.tfstate に保存される。
なぜ必要か
公式ドキュメントによると、Terraform はステートを使って、リモートのシステムにあるオブジェクトと、設定で宣言したリソースのインスタンスを対応づける。管理するオブジェクトのメタデータの追跡や、大きなインフラでの性能の改善にも使う。
仕組み
Terraform は操作の前にリフレッシュを行い、実際のインフラに合わせてステートを更新する。そのうえで、ステートと設定を比べて変更の内容を決める。
既定では、ワークスペースごとのステートをローカルの terraform.tfstate に保存し、1 つ前のステートを terraform.tfstate.backup に残す。HashiCorp は、HCP Terraform かリモートのバックエンドにステートを置くことを勧めている。
注意点
ローカルに置くと、他人と共同作業しにくく、ファイルを失うとステートも失う。ステートには秘密の値が入ることがあるので、ロックやアクセス制御のない場所に置くと、データの消失や秘密の漏えいにつながる。