📝
Terraform のリファクタを試してみる(リソース名変更編)
Terraform のリファクタリング用ブロックをいろいろと試してみる
本記事ではリソース名変更を試してみる
目次
参考情報
リソース名の変更
やりたいこと
- aws_s3_bucket.old リソースを aws_s3_bucket.new リソースに変更する
これまでの手順
- terraform state mv を利用していた
moved ブロックを使ってみる
作業前
- 記述が古い状態であることを確認する
- terraform state list を実行し、リソース名が古い状態であることを確認する
リソース名変更
- 以下の対応をする
- リソース名を変更したいものに変える
- moved ブロックを利用し以下を設定する
- from:既存のリソース名を記述する
- to :変更先のリソース名を記述する
- terraform plan を実行し、moved になっていることを確認する
- 差分がないことを確認した後に apply を実行し、moved になったことを確認する
- terraform state list を実行し、リソース名が変わっていることを確認する
お片付け
- 以下の対応をする
- コメントアウト部分を削除する
- moved 部分を削除する
- terraform plan を実行し、No changes であることを確認する
- terraform apply を実行し、No changes であることを確認する
応用編
count で分岐していたものをやめる
作業前
- count で workspace を元にリソース作成の制限をしていることを想定
state mv を利用する場合
- ファイルを変更して terraform state mv を実行するが、リソース名のリスト部分に注意する
moved ブロックを利用する場合
- ファイルを変更して terraform plan / apply を実行するが、リソース名のリスト部分に注意する
module 名を変更する
作業前
state mv を利用する場合
- module を利用する部分を修正する
- module を認識させるため terraform init を実行する
- state mv の実行と確認
moved ブロックを利用する場合
- ファイルを編集する
- module を認識させるため terraform init を実行する
- plan を確認し、moved であることを確認する
- apply する