用途:把 Terraform 代码迁移到 OpenTofu,适用于因许可证原因迁移、评估新 IaC 项目选型、更新 CI/CD 或配置 OpenTofu Provider 注册表的场景。
前提:已有 Terraform 0.13+ 代码库、安装 OpenTofu CLI、可访问状态后端(S3、GCS、Azure Blob 等)。安装示例:macOS 用 brew install opentofu;Linux 下载 install-opentofu.sh 并按 deb 或 rpm 方式安装;Docker 使用 ghcr.io/opentofu/opentofu:latest。验证用 tofu --version。
主要能力:OpenTofu 可直接读取 Terraform 状态文件,无需迁移状态;将命令由 terraform init/plan/apply 等替换为 tofu 对应命令;删除 .terraform.lock.hcl 后运行 tofu init -upgrade 重新锁定 Provider;后端配置可原样复用。它还支持原生状态加密(key_provider、method、state、plan 等块)以及后端配置和模块源使用变量,这两点是 Terraform 不具备的。Provider 注册表镜像多数 Terraform Provider,source 仍可用 hashicorp/aws 等写法。
使用方式:迁移时先运行 terraform version 确认版本,再用 tofu init 和 tofu plan 验证现有状态;随后替换命令、重新生成锁文件、按需配置 Provider 注册表与状态加密,并更新 GitHub Actions(使用 opentofu/setup-opentofu@v1)或 GitLab CI(使用 ghcr.io/opentofu/opentofu 镜像)。两者可共存,用别名或包装脚本逐步迁移。
限制:执行基础设施命令可能中断服务,变更状态前应确认目标范围并备份/快照;该资料仅含文档,未附带上游脚本和模板。