用途:以 Terraform/OpenTofu 编写基础设施即代码,用于云资源供给、模块开发、状态与后端管理、多环境策略、Provider 配置以及重构与导入。资料建议优先使用 OpenTofu(Linux 基金会分支,配置兼容,支持客户端状态加密)。
主要能力:模块与配置设计(共享 modules/、每环境一个根模块、提交锁文件;输入类型化并校验;required_providers 固定版本;远程状态加锁);状态与后端(S3 原生锁 use_lockfile = true,Terraform 中 DynamoDB 锁已弃用,OpenTofu 未弃用;backend 块不能引用 var/local/data,需用 -backend-config 部分配置,凭据只走环境变量);多环境(推荐目录隔离,workspaces 不用于环境隔离,tfvars 为第三种);安全(KMS 轮换、S3 SSE-KMS 与 bucket key、RDS 创建时加密、SG 规则拆分为独立资源、Secrets Manager 只传 ARN);Provider 与别名、default_tags;动态块、for 表达式、count 与 for_each;排障与测试(fmt、validate、tfsec/trivy/checkov、infracost)。
使用方式:常用命令包括 tofu init -backend-config=...、tofu apply -var-file=...、tofu state list/show/mv/rm/import、tofu force-unlock、tofu providers lock -platform=...、tofu fmt -recursive、tofu validate。资料建议用 moved/removed/import 块替代命令式 state 操作。
适用场景:云资源供给、模块化复用、多环境与多账号/多区域部署、既有资源导入与重构、状态迁移。
限制:sensitive = true 只隐藏 UI 输出,值仍以明文存于状态;for_each 键须在计划期已知且非敏感;count 删除中间元素会重建错误资源;create_before_destroy 会传播到依赖且不可逆;prevent_destroy 在删除资源块后失效。具体版本要求与命令映射表见原文,未提供的收费、平台等信息暂未提供。