49,714 颗星、12 年老兵:Terraform 在 2026 年为什么还是 IaC 的默认选择
49,714 颗星、12 年老兵:Terraform 在 2026 年为什么还是 IaC 的默认选择
Terraform 的仓库里躺着一个有意思的数字:1,928 个 open issues。这个数字比大多数新生开源项目的总 Issues 还多,但它不是衰落的信号——它是规模的证明。Terraform 诞生于 2014 年,Go 语言编写,靠一句”把你的基础设施当代码来管理”撬动了整个云原生时代。2026 年 9 月,IBM 收购 HashiCorp 完成后,Terraform 的企业属性更强了,但它面对的竞争格局也比以往任何时候都复杂。
最近三个月 Terraform 密集发布:v1.16.4(2026-09-23 修复 Terraform Enterprise 兼容性问题)、v1.17.0-beta2(2026-09-23 新增变量和本地模块用于 provider requirements)。与此同时,Terraform 的开源分支 OpenTofu 在 2026 年 4 月正式进入 CNCF Sandbox,OpenTofu 1.12.x 与 Terraform 1.14.x 的功能差异正在以季度为单位拉开。
这不是一篇”Terraform vs OpenTofu 该选谁”的投票帖。这是一个 49,714 颗星的老项目,在商业化压力、开源社区分流、生产环境依赖三重约束下,它在 2026 年能做什么、不能做什么、谁该用它、谁应该考虑换路。
Terraform 解决了什么真实问题
Terraform 的核心价值用一句话就能说清楚:它让你用代码描述”我想要什么样的基础设施”,然后自动算出从现状到目标之间的最小变更路径。这个”执行计划”(plan)机制是 Terraform 区别于大多数配置管理工具的根本——你总是能先看到要改什么,再决定要不要真的改。
关键技术特征:
- HCL(HashiCorp Configuration Language):Terraform 自创的声明式领域特定语言,语法上比 JSON/YAML 更适合表达基础设施意图,比 Python/Go 等通用语言更结构化
- 资源图(Resource Graph):Terraform 解析所有资源之间的依赖关系,然后并行创建或修改无依赖的资源——这让它跑得比人工操作快得多
- State 文件:Terraform 的”记忆”,记录了它创建的所有资源的真实 ID 和当前状态。没有 State,Terraform 就不知道哪些该改、哪些该新建
- Provider 生态:超过 1,000 个 providers,AWS、Azure、GCP、GitHub、Kubernetes、Cloudflare……主流基础设施和 API 服务基本都有官方或社区 provider
- 声明式而非过程式:你描述最终状态,Terraform 决定执行顺序;不用像 Ansible 那样一步步写”先做这个、再做那个”
一个具体场景:你要在 AWS 上建一套”dev/staging/prod 三套完全相同但隔离的环境”。用 Terraform,你写一份 config,对三个 workspace 分别 apply——代码完全一样,差异全部由变量控制。用手动操作或脚本,这个过程要么极其漫长,要么极容易出错。
2026 年的版本现状与关键限制
Terraform 最新稳定版是 v1.16.4(2026-09-23),beta 是 v1.17.0-beta2。HCP Terraform Agent 也已迭代到 v1.29.x(2026 年 9 月的路线图显示支持 Stacks 的 Deferred Action Invocations 和 Action Invocation Planning)。
但 Terraform 有几个明确的局限性,2026 年的用户需要正视:
1. 许可证已经从 MPL 2.0 换成 BSL 1.1
这是 2023 年 HashiCorp 商业化转向的核心动作。BSL 允许免费使用 Terraform CLI 进行基础设施管理,但禁止用 Terraform 构建竞争性产品。2026 年 IBM 完成 $64 亿收购 HashiCorp 后,Terraform 的商业压力只增不减。
2. State 文件管理在大规模时是真实的工程挑战
State 文件是 Terraform 的内存,但这个内存需要人工维护。当你有 50+ 个 workspaces、跨多个云账号时,State 的一致性和锁的问题会让团队头疼。remote backend(S3 + DynamoDB 锁)是标准解法,但这套配置本身也需要管理。
3. 错误处理和回滚能力弱
Terraform 没有原生的 try-catch 或自动回滚机制。apply 失败了,你需要手动删除失败的资源,再重新 apply。对于生产环境,这需要配套的 CI/CD 策略来兜底。
4. provider 版本滞后是真实痛点
社区多次指出,Terraform providers 的新功能上线往往比云厂商 API 本身晚几周甚至几个月。如果你需要用某个云服务的最新功能,可能要等 provider 更新,或者自己写 provider。
OpenTofu 分叉两年后的真实差距
2023 年 8 月 HashiCorp 改许可证后,Linux Foundation 下的 OpenTofu 项目正式起航。到 2026 年 9 月,OpenTofu 已经到了 1.12.x,OpenTofu Registry 托管了 3,900+ providers 和 23,600+ 模块。
两者功能对比(截至 2026 年中):
| 维度 | OpenTofu | Terraform |
|---|---|---|
| 许可证 | MPL 2.0 | BSL 1.1 |
| 治理 | Linux Foundation / CNCF 社区 | HashiCorp / IBM |
| HCL 兼容 | 完全兼容 | — |
| State 文件格式 | 兼容 | 兼容 |
| State 加密 | 原生客户端加密(1.7+) | 仅 backend 级别(如 S3 SSE) |
| Registry | registry.opentofu.org | registry.terraform.io |
| 企业平台 | 第三方(Scalr、Spacelift 等) | HCP Terraform(IBM) |
独立基准测试表明,在同一套约 400 资源的 AWS 代码库上,两者运行时间几乎相同——因为大部分时间都花在等云厂商 API 响应,而非本地处理。选择哪个不要看速度。
真正值得关注的差距是治理和路线图:Terraform 的未来由 IBM 决定,OpenTofu 的未来由社区决定。OpenTofu 已经独立出了 Terraform 没有的功能(如客户端 state 加密),两者正在以不同节奏演进。
适合谁 / 不适合谁
适合用 Terraform 的场景:
- 多云(AWS + Azure + GCP 或更多)基础设施,需要统一工具链
- 团队超过 5 人,需要通过 PR 流程控制基础设施变更
- 已有 Terraform 代码库 1,000+ 行,换工具成本高于继续用 Terraform 的成本
- 需要 Terraform Cloud / HCP Terraform 的商业特性(政策即代码、Sentinel、团队协作)
- 在 IBM/HashiCorp 生态内有其他产品(Vault、Consul 等)联动需求
应该认真考虑 OpenTofu 的场景:
- 新项目,优先考虑开源许可证和社区治理而非商业支持
- 对供应商锁定(vendor lock-in)敏感,特别是对 IBM 未来产品路线不确定
- 已经对 Terraform 1,000+ 行代码做了深度定制,迁移到 OpenTofu 的实际成本需要评估
- 需要客户端 state 加密功能(OpenTofu 原生支持,Terraform 需要配合 backend)
Terraform 明确不适合的场景:
- 纯配置管理(即在已有服务器上装软件、配设置)——这是 Ansible / Chef 的领域,Terraform 的强项是创建和销毁基础设施,而非配置其上运行的软件
- 实时事件驱动的基础设施变更——Terraform 的 plan/apply 周期是分钟级,不适合需要秒级响应的工作负载
- AWS 单云且大量使用 CloudFormation 已有资源——迁移成本可能不值得
下一步:如果你想认真用 Terraform
- 安装并跑通第一个 plan:
terraform init→terraform plan→terraform apply,官方文档在 https://developer.hashicorp.com/terraform/docs,全中文版本也在 Learn 平台上有 - 把你的 state 搬到 remote backend:在生产环境,本地 state 文件是团队协作的灾难。AWS S3 + DynamoDB 是最常见的方案
- 尝试 Terraform Stacks:这是 Terraform 1.7+ 引入的新特性,针对多环境、多区域部署的协调问题给出了更结构化的解法
- 关注 OpenTofu 的进展:不是让你换,而是如果你负责技术选型,了解 OpenTofu 1.12+ 的每个版本变化是 2026 年的必要功课
相关链接:
- Terraform 官方文档:https://developer.hashicorp.com/terraform/docs
- Terraform Registry(找 providers 和 modules):https://registry.terraform.io
- OpenTofu 官网:https://opentofu.org
- Terraform vs OpenTofu 2026 详细对比:https://www.stackguardian.io/post/opentofu-vs-terraform
- IBM 收购 HashiCorp 背景:https://www.sumguy.com/opentofu-after-terraform-fork
- HCP Terraform Agent Changelog:https://developer.hashicorp.com/terraform/cloud-docs/agents/changelog
评论区
登录后可评论。