将 Terraform 中的远程状态迁移到另一个远程状态的方法
将 Terraform 中的 remote state 移动到另一个 remote state 的方法是什么?
问题
- Terraformであるremote stateにあるresourceやmoduleを別のremote stateに移動する時ってあると思います。tarraform state rm した後に、terraform import をしても良いけれども、terraform import はすべてのresourceに対応しているわけじゃないのでそんな時に使えたりします。
步骤
1. 将目标状态转移到本地
terraform state mv --state-out=local.tfstate \
module.sample module.sample
–state-out オプションで指定したpathにstateを出力する。
2. 前往目标状态的dir,并获取远程状态。
terraform state pull > remote.tfstate
terraform state pull でremote stateをcopyすることが出来るのでファイルに出力する
希望输出转移到本地的模块的状态,并输出。
terraform state mv -state=local.tfstate \
--state-out=remote.tfstate \
module.sample module.sample
-state オプションは指定したstateを元に読み込む、–state-out オプションはmvしたstateを出力して、既存のstate fileを指定すると差分をmergeして出力してくれる。
将修正后的state推送到远程state。
terraform state push remote.tfstate
terraform state push FILENAME は指定したファイルをremote stateに反映させることが出来る。
最后
- あれー?出来たような気がするんだけどなーと思いながらも、意外とやり方書いてあるのが見当たらなかった。