跳至主要内容

移动资源

OpenTofu 的状态将每个现实世界对象与其在特定 资源地址 处配置的资源相关联。在更改资源的属性时,这是无缝的,但如果您更改资源的名称、将其移动到不同的模块或更改其提供程序,OpenTofu 将无法跟踪该资源。

通常情况下,这没关系:OpenTofu 将销毁旧资源,用新资源(使用新的资源地址)替换它,并更新任何依赖其属性的资源。

在必须保留现有基础设施对象的情况下,您可以明确告诉 OpenTofu 将其与不同的配置资源相关联。

对于大多数情况,我们建议使用 OpenTofu 语言的重构功能 在您的模块中准确记录资源名称随时间的变化方式。OpenTofu 在计划期间会自动对这些信息做出反应,因此您的模块的用户无需采取任何不寻常的额外步骤。

但也有一些其他情况需要显式状态修改。对于这些情况,请考虑以下 OpenTofu 命令

  • tofu state mv 命令 更改配置中与特定现实世界对象相关联的资源地址。使用此命令在重命名资源时或将资源移入或移出子模块时保留对象。

  • tofu state rm 命令 告诉 OpenTofu 停止将资源作为当前工作目录和工作区的一部分进行管理,而不会销毁相应的现实世界对象。(您可以稍后使用 tofu import 在不同的工作区或不同的 OpenTofu 配置中开始管理该资源。)

  • tofu state replace-provider 命令 将现有资源传输到新的提供程序,而无需重新创建它们。