🔖
Terraformで環境ごとにバックエンド(tfstate)を切り替える
stg, prodなどAWSリソースを別アカウントに構築する際にTerraformのバックエンドも別個にしたい、という場合の簡単な実現方法。
構築するメインのリソースをアカウントごとに切り替える記事はWorkspace利用やファイル分割など色々あるが、バックエンドを切り替える記事があまり見られなかったので備忘を兼ねて。
結論
terraform init
コマンドの-reconfigure
と-backend-config
のオプションで利用するバックエンドを切り替える。
切り替えた後、terraform apply
など目的のコマンドを実行する。
※前提としてロール/アカウントの切り替えやバックエンドのS3バケット作成は必要。
設定ファイル例
Terraformの他のファイルと同じディレクトリに適当な設定ファイルを配置する。
└── backend
├── dev.tfbackend
├── stg.tfbackend
└── prod.tfbackend
dev.tfbackendの例
bucket = "tfstate-project-name-dev"
region = "ap-northeast-1"
コマンド例
$ terraform init -reconfigure -backend-config=backend/dev.tfbackend
参考
Command: init | Terraform by HashiCorp
Re-running init with an already-initialized backend will update the working directory to use the new backend settings. Either -reconfigure or -migrate-state must be supplied to update the backend configuration.
すでに初期化されたバックエンドで init
を再実行すると、新しいバックエンドの設定を使用するように作業ディレクトリが更新される。バックエンドの設定を更新するには、-reconfigure
または -migrate-state
のいずれかを指定する必要があります。
Discussion