- 命令行
- 使用云端后端与 OpenTofu CLI
- 初始化和迁移
初始化和迁移
在 配置工作目录的云端后端设置 后,您必须运行 tofu init
来完成设置。如果工作目录没有现有的 OpenTofu 状态,您可以立即开始使用云端后端的 OpenTofu。
当您在以下情况下运行 tofu init
时,OpenTofu 会要求您选择是否要从任何现有的工作区迁移状态。
-
从本地状态或状态后端迁移: 如果工作目录在其中一个或多个工作区中已经存在状态数据,OpenTofu 会询问您是否要将该状态迁移到新的云端后端工作区。
-
从
remote
后端迁移: 如果工作目录已连接到使用remote
后端的云端后端,OpenTofu 可以继续使用相同的云端后端工作区。您需要将remote
后端块切换到cloud
块。
从本地状态或状态后端迁移
如果工作目录中已有可用的状态数据(使用本地状态或 状态后端),OpenTofu 会要求您同意将该状态迁移到云端后端。您需要有权管理目标云端后端组织中的工作区。此过程是交互式的,并提供自述文档,类似于在状态后端之间移动。
OpenTofu 还会提示您在迁移过程中重命名工作区,以便为未命名的 default
工作区(云端后端要求所有工作区都必须命名)提供名称,或为您的工作区名称提供更多上下文信息。与仅使用 OpenTofu CLI 的工作区(代表与相同配置关联的多个环境,例如生产、登台、开发)不同,云端后端工作区可以代表完全独立的配置,并且必须在云端后端组织中具有唯一的名称。
因此,OpenTofu 会提示您根据与现有名称相关的模式重命名工作目录的工作区。这可以表明这些特定工作区共享配置。典型策略为 <COMPONENT>-<ENVIRONMENT>-<REGION>
(例如,networking-prod-us-east
、networking-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"]
}
}
}
因为 cloud
块不支持 prefix
参数,所以迁移后,在使用 OpenTofu CLI 时,您必须通过完整名称引用工作区。例如,您必须运行命令 tofu workspace select my-app-prod
,而不是 tofu workspace select prod
。