Terraform movedブロックによる、stateの移動

    tag:auto

参考 : https://spacelift.io/blog/terraform-moved-block

Terraform movedブロック

Terraform movedブロックは、バージョン1.1.0以降で導入されたブロックです。 このブロックは、古いresourceを新しいresourceに明示的にマッピングすることにより、リソースをリファクタリングする簡単な方法を提供します。

改名やリファクタリング中にstateを手動で管理するリスクを大幅に軽減します。

使用方法

moved ブロックは、リソースの名前変更、モジュール間のリソースの移動、リファクタリングモジュール名、リソースブロックタイプの変更、構成の分割または統合などの場合に使用されます。 移動するブロックは、Terraform stateを更新し、リソースを破壊して再現せずに新しい場所を反映します。

例えば、 リソースの名前を変更する場合(モジュール名など)、movedブロックを使用してTerraformにリソースの名前変更を示すことができます。 また、モジュール間のリソースの移動や for_each ループを使用してリソースを新しい名前に移動することもできます。

想定ケース

Terraformのmovedブロックは、構成を破壊して再作成したくないが、リソースをリファクタリングまたは変更する必要がある場合に使用されます。

  • リソースの名前変更:構成内のリソースの名前を変更する場合(例:aws_instance.old_nameにaws_instance.new_nameに)。
  • モジュール再編成:モジュール間でリソースが移動されるか、ルートレベルのリソースからモジュール管理リソース(またはその逆)に変更された場合、移動ブロックを使用してTerraformを遷移に認識し続けることができます。
  • モジュール名変更 :新しい命名規則または標準に合わせてモジュールの名前を変更または再編成している場合。

Terraform移動ブロック

Terraform移動ブロックの構文は次のとおりです。

moved {
  from = "<old_address>"
  to   = "<new_address>"
}

詳細:

  • Fromは、前の構成のリソースまたはモジュールの元のアドレスです
  • toは、更新された構成内のリソースまたはモジュールの新しいアドレスです

page:https://minegishirei.hatenablog.com/entry/2025/03/09/221842

Dear My Frends.: 個人開発宣伝ラボ - 個人開発者が間違った施策で時間を溶かさないための、心理学と実務知見のナレッジ共有コミュニティ