📝

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 する