Terraformでremote stateを別のremote stateに移動する方法
課題
- Terraformであるremote stateにあるresourceやmoduleを別のremote stateに移動する時ってあると思います。
tarraform state rm
した後に、terraform import
をしても良いけれども、terraform import
はすべてのresourceに対応しているわけじゃないのでそんな時に使えたりします。
手順
1. 対象のstateをlocalに移動する
terraform state mv --state-out=local.tfstate \
module.sample module.sample
-
--state-out
オプションで指定したpathにstateを出力する。
2. 移動先のstateのdirに移動して、remote stateを取得する。
terraform state pull > remote.tfstate
-
terraform state pull
でremote stateをcopyすることが出来るのでファイルに出力する
3. localに出力したstateに移動させたいmoduleのstateを出力する
terraform state mv -state=local.tfstate \
--state-out=remote.tfstate \
module.sample module.sample
-
-state
オプションは指定したstateを元に読み込む、--state-out
オプションはmvしたstateを出力して、既存のstate fileを指定すると差分をmergeして出力してくれる。
4. 修正したstateをremote stateにpushする
terraform state push remote.tfstate
-
terraform state push FILENAME
は指定したファイルをremote stateに反映させることが出来る。
おわりに
- あれー?出来たような気がするんだけどなーと思いながらも、意外とやり方書いてあるのが見当たらなかった。