用途:指导使用 OpenTofu(MPL-2.0 许可、Linux 基金会维护的 Terraform 开源分支)编写基础设施即代码,通过 HCL 声明式管理云资源。核心原则包括声明式优于命令式、幂等性、模块化、以状态文件为事实来源、不可变基础设施。
主要能力:
- HCL 语法:资源块、数据源、变量(含 validation)、输出(含 sensitive)、locals、元参数 count、for_each、depends_on、lifecycle(prevent_destroy、create_before_destroy、ignore_changes、replace_triggered_by)。
- 模块设计:模块目录结构(main.tf、variables.tf、outputs.tf、versions.tf、README.md)与远程模块版本固定。
- 状态管理:S3 远程后端加 DynamoDB 锁;OpenTofu 独有的状态加密(key_provider + aes_gcm,enforced)。
- CLI 工作流:tofu init、tofu validate、tofu fmt -recursive、tofu plan -out=plan.tfplan、tofu apply plan.tfplan、tofu destroy、tofu show、tofu refresh 以及 tofu state list/show/mv/rm、tofu import。
- 常见模式:条件资源(count 三目)、dynamic 块。
使用方式:默认采用扁平结构,一个目录下 main.tf、variables.tf、outputs.tf、versions.tf、terraform.tfvars,共 3-5 个文件;90% 场景无需自定义本地模块。仅企业多区域多账户、跨团队复用模块、复杂依赖链或用户明确要求时才引入模块与多环境目录。
适用场景:管理 1-5 个同类资源、单一提供商与区域、小团队或个人开发者、标准基础设施模式。
限制:资源未提供具体定价、收费、平台或效果信息;资料未说明安装命令与运行环境要求。变量取值、提供商认证等细节需参考资料内引用的 references 文件,此处未展开。