メインコンテンツへスキップ

リソースの移動

OpenTofuの状態は、現実世界の各オブジェクトを特定のリソースアドレスで構成されたリソースに関連付けます。これはリソースの属性を変更する場合はシームレスですが、リソースの名前を変更したり、別のモジュールに移動したり、プロバイダーを変更したりすると、OpenTofuはリソースを追跡できなくなります。

通常はそれで問題ありません。OpenTofuは古いリソースを破棄し、新しいリソース(新しいリソースアドレスを使用)に置き換え、その属性に依存するリソースを更新します。

既存のインフラストラクチャオブジェクトを維持することが重要な場合は、OpenTofuに別の構成済みリソースと関連付けるように明示的に指示できます。

ほとんどの場合、OpenTofu言語のリファクタリング機能を使用して、時間の経過とともにリソース名がどのように変化したかをモジュールに正確にドキュメント化することをお勧めします。OpenTofuはプランニング中にこの情報に自動的に反応するため、モジュールのユーザーは特別な手順を踏む必要はありません。

ただし、明示的な状態変更が必要な他の状況もあります。それらの場合は、次のOpenTofuコマンドを検討してください。

  • tofu state mv コマンドは、構成内のどのリソースアドレスが特定の実世界のオブジェクトに関連付けられているかを変更します。リソースの名前を変更する場合、またはリソースを子モジュールとの間で移動する場合に、オブジェクトを保持するために使用します。

  • tofu state rm コマンドは、対応する現実世界のオブジェクトを破棄せずに、現在の作業ディレクトリとワークスペースの一部としてリソースの管理を停止するようにOpenTofuに指示します。(後でtofu importを使用して、別のワークスペースまたは別のOpenTofu構成でそのリソースの管理を開始できます。)

  • tofu state replace-provider コマンドは、既存のリソースを再作成することなく、新しいプロバイダーに転送します。