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
のいずれかを指定する必要があります。
Author And Source
この問題について(Terraformで環境ごとにバックエンド(tfstate)を切り替える), 我々は、より多くの情報をここで見つけました https://zenn.dev/y_megane/articles/20220406-terraform-backend-switching著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Collection and Share based on the CC protocol