跳至主要内容

初始化和迁移

配置工作目录的云端后端设置 后,您必须运行 tofu init 来完成设置。如果工作目录没有现有的 OpenTofu 状态,您可以立即开始使用云端后端的 OpenTofu。

当您在以下情况下运行 tofu init 时,OpenTofu 会要求您选择是否要从任何现有的工作区迁移状态。

  1. 从本地状态或状态后端迁移: 如果工作目录在其中一个或多个工作区中已经存在状态数据,OpenTofu 会询问您是否要将该状态迁移到新的云端后端工作区。

  2. remote 后端迁移: 如果工作目录已连接到使用 remote 后端的云端后端,OpenTofu 可以继续使用相同的云端后端工作区。您需要将 remote 后端块切换到 cloud 块。

从本地状态或状态后端迁移

如果工作目录中已有可用的状态数据(使用本地状态或 状态后端),OpenTofu 会要求您同意将该状态迁移到云端后端。您需要有权管理目标云端后端组织中的工作区。此过程是交互式的,并提供自述文档,类似于在状态后端之间移动。

OpenTofu 还会提示您在迁移过程中重命名工作区,以便为未命名的 default 工作区(云端后端要求所有工作区都必须命名)提供名称,或为您的工作区名称提供更多上下文信息。与仅使用 OpenTofu CLI 的工作区(代表与相同配置关联的多个环境,例如生产、登台、开发)不同,云端后端工作区可以代表完全独立的配置,并且必须在云端后端组织中具有唯一的名称。

因此,OpenTofu 会提示您根据与现有名称相关的模式重命名工作目录的工作区。这可以表明这些特定工作区共享配置。典型策略为 <COMPONENT>-<ENVIRONMENT>-<REGION>(例如,networking-prod-us-eastnetworking-staging-us-east)。

remote 后端迁移

如果工作目录已连接到使用 remote 后端的云端后端,OpenTofu 可以继续使用相同的云端后端工作区。这些工作区显示的本地名称将更改为与远程名称匹配。

remote 后端 是 Terraform 版本 0.11.13 到 1.0.x 的云端后端的首要实现。我们建议对 OpenTofu 和 Terraform 版本 1.1 或更高版本使用原生 cloud 集成,因为它提供了改进的用户体验和各种增强功能。

块替换

remote 后端切换到 cloud 块时,OpenTofu 将继续使用同一组云端后端工作区。用等效的 cloud 块替换您的 backend "remote" 块。

单个工作区

如果您使用带有 name 参数的单个工作区,请将块标签更改为 cloud

代码块
terraform {
- backend "remote" {
+ cloud {
organization = "my-org"

workspaces {
name = "my-app-prod"
}
}
}

多个工作区

如果您使用带有 prefix 参数的多个工作区,请用使用 tags 参数的 cloud 块替换它。您可以指定任意数量的标签来区分工作目录的工作区,但一个好的起点可能是使用之前使用的任何前缀。

您配置的标签不需要存在于现有工作区中。初始化时,OpenTofu 会根据需要将指定的标签添加到工作区。

代码块
terraform {
- backend "remote" {
+ cloud {
organization = "my-org"

workspaces {
- prefix = "my-app-"
+ tags = ["app:mine"]
}
}
}