TerraformのstateをS3でリモート管理する
Terraformの管理下にあるリソースの情報は tfstate
ファイルに保存されている。たとえば、チームでこのtfstate
を共有したいときにどうすべきかというのが課題になる。
tfstate ファイルをS3バケットに保存する(version >= 0.9.0)
Terraform 0.9.0
から terraform remote
の変わりに Remote Backend になった。
- terraform/CHANGELOG.md at master · hashicorp/terraform · GitHub
❯ tf remote pull Local and remote state in sync
tfstate ファイルをS3バケットに保存する(version < 0.9.0)
S3バケットにこの状態ファイルを保存するのは簡単で、単に以下のコマンドで設定すれば良い。
terraform remote config \ -backend=S3 \ -backend-config="region=ap-northeast-1" \ -backend-config="bucket=<YOUR_STATE_BUCKET_NAEM>" \ -backend-config="key=<STATE_PATH>/<STATE_FILE_NAME>.tfstate"
この設定を行った後にpush
する。
terraform remote push
以下のコマンドを実行すればpush
したファイルが一覧されるはず。
aws s3 ls s3://<YOUR_STATE_BUCKET_NAME> --recursive
ローカルにリモートのステートを持ってくるにはpull
を実行する。
terraform remote pull
また、
terraform remote config -disable
でリモート管理をやめ、ローカルに戻せるらしい。