opentofu
OpenTofu 基础设施即代码
补充说明
opentofu(命令 tofu)是 Terraform 的开源分支,兼容大部分 Terraform 配置、provider 和状态格式,并增加了状态加密等特性。迁移前要确认 provider、module 和 CI 工具的兼容性。
常用示例
tofu init
tofu init -upgrade
tofu fmt -recursive
tofu validate
tofu plan -out=tfplan
tofu apply tfplan
tofu show
tofu output
tofu state list
tofu import aws_instance.web i-0123456789
tofu destroy
tofu test
易错点与排错
- 虽然命令和配置高度兼容,但
tofu 和 terraform 的状态不要混用;团队统一工具。
- provider registry 的地址和签名策略要确认;私有 provider 需要镜像配置。
- 状态加密是 OpenTofu 的特性;启用前确认 backend 和恢复流程。
- 版本约束要锁定;不同版本对配置语法的支持可能不同。
- 模块来源支持 git/registry;迁移时检查 source 地址是否仍可访问。
- CI 镜像里默认只有 terraform 时,要显式安装 tofu 并改命令。
- 回滚到 Terraform 前先确认状态格式和特性没有被 OpenTofu 改写。
- 生产环境先在只读 plan 上验证,再切换 apply。
相关命令
terraform — 原始实现
terragrunt — 编排封装
读完自测
合上页面,先回答,再展开对照。
- OpenTofu 和 Terraform 的配置高度兼容,为什么状态不能混用?
- 启用状态加密前需要确认什么?
- 生产环境切换时如何验证?回滚到 Terraform 前要确认什么?
答案
- 虽然命令和配置高度兼容,但两者状态不能混用,团队应统一工具。
- 要确认 backend 和恢复流程。
- 先在只读 plan 上验证再 apply;回滚前确认状态格式和特性没有被 OpenTofu 改写。