Terraform State Moveコマンド
terraform state mv
コマンドは、Terraformエコシステムにおいてリソースの状態を管理するためのツールです。このコマンドは、構成ファイルで行われた変更に合わせて、Terraformのステートをリファクタリングまたは操作するために主に使用されます。
このコマンドは、通常、Terraformファイル内でのインフラストラクチャの論理構造が更新された場合に使用されます。例えば、リソースやモジュールの名前を変更したり、リソースを別のモジュールに移動したり、さらには異なるTerraformステート間でリソースを移動したりする場合があります。このような場合、標準のterraform apply
を実行すると、リソースが削除されて再作成される可能性があり、これは破壊的で一般的に望ましくありません。terraform state mv
コマンドは、これらのシナリオで安全にステートアイテムを移動させることができ、実際のリソースに影響を与えることなく操作することができます。
Terraform State Moveの構文
terraform state mv
コマンドは、直感的な構文で提供されます。少なくとも2つの引数であるソースアドレスと宛先アドレスが必要です。以下にコマンドの基本的な構造を示します。
$ terraform state mv [options] SOURCE DESTINATION
SOURCE
とDESTINATION
は、Terraformステート内のアイテムのアドレスを指します。これらのアドレスは、リソースまたはモジュールを指すことができます。例えば、aws_instance
という名前のリソースがexample
という名前である場合、アドレスはaws_instance.example
となります。
同じモジュール内でリソースを移動する例を考えてみます。
$ terraform state mv aws_instance.old aws_instance.new
このコマンドでは、aws_instance.old
をaws_instance.new
に名前変更しています。
次に、モジュール間でリソースを移動する例を見てみます。
$ terraform state mv module.old_module.aws_instance.example module.new_module.aws_instance.example
このコマンドでは、module.old_module.aws_instance.example
が現在のインスタンスのアドレスであり、module.new_module.aws_instance.example
がコマンド実行後のインスタンスの移動先のアドレスです。