tfstateの管理上の注意
特段、設定をしない限りterraform applyをしたマシン上にtfstateファイルが保存される。
変更差分を正しく反映させるには最新のtfstateファイルを常に共有する必要がある。
tfstateファイルは常に最新のものを共有する
用語
tfstateを管理するストレージをTerraformのバックエンドという。
バックエンドの設定方法
バックエンドとして汎用的に使われる例としてAWSのS3がある。
設定手順
- バケットの作成
- バケットのバージョニングを有効にする(推奨)
-
Terraformのモジュールに公式ドキュメントを参考に以下を追記
terraform {
backend "s3" {
bucket = "mybucket"
key = "path/to/my/key"
region = "us-east-1"
}
}
Future work
S3をバックエンドに設定してtfstateを最新に保っていたとしても、複数人が同時にterraform applyしてしまうことによって変更差分が正しく反映されない場合に備えてDynamoDBなどを使用してロックをかけることができるらしい。
次回はこれを実際にやってみたいところ。