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
などを使用してロック
をかけることができるらしい。
次回はこれを実際にやってみたいところ。