基础设施即代码的两条路线之争
2023 年 8 月,HashiCorp 把 Terraform 的开源许可证从 MPL 2.0 改成了 BSL(Business Source License)。这一刀下去,整个 IaC 社区炸了锅。OpenTofu 从 Linux Foundation 手里拿到了 fork 的合法性,Pulumi 则趁势加速推广”用真正的编程语言写基础设施”的理念。
到了 2026 年,尘埃落定。Terraform 依然是市场占有率最高的 IaC 工具,但 Pulumi 的增长曲线陡得吓人。两者都是生产级工具,选哪个取决于你团队的 DNA。
这篇文章不搞”各有优劣”的废话,直接告诉你:什么团队该选 Terraform,什么团队该选 Pulumi,什么情况下 OpenTofu 才是正确答案。
核心差异:HCL vs 真编程语言
Terraform 用 HCL(HashiCorp Configuration Language),一种专门为基础设施设计的声明式语言。Pulumi 让你用 TypeScript、Python、Go、C# 这些你已经会的语言来写基础设施代码。
这不是语法偏好的问题,是工程哲学的分歧。
HCL 的设计哲学是”约束即安全”。它故意限制你能做的事情——没有复杂的循环逻辑,没有运行时动态行为,所有东西都是声明式的。好处是:任何人看到一段 HCL 代码,都能立刻理解它要创建什么资源。坏处是:当你需要复杂的抽象和复用时,HCL 的 module 系统会让你抓狂。
Pulumi 的哲学是”开发者已经知道怎么写好代码了”。你可以用类和函数创建可复用的基础设施组件,用 IDE 的自动补全和类型检查来避免错误,用单元测试框架来测试基础设施逻辑。一个 DatabaseCluster 组件可以封装 RDS 实例、安全组、参数组的创建逻辑,调用方只需要传几个参数。
生态系统:4800 vs 150+
Terraform 的 provider 生态是碾压级的。4800+ 个 provider 覆盖了你能想到的几乎所有云服务和 SaaS 产品。AWS、GCP、Azure 的 provider 由各云厂商官方维护,更新速度快,bug 修复及时。
Pulumi 的原生 provider 数量大约 150 个。但这里有个关键信息:Pulumi 可以桥接使用所有 Terraform provider。通过 pulumi-terraform-bridge,你能在 Pulumi 里使用任何 Terraform provider,只是体验不如原生 provider 那么丝滑(类型推断可能不完整,文档可能缺失)。
实际影响:如果你只用 AWS/GCP/Azure + 几个主流 SaaS,两者体验差不多。如果你需要对接一些小众服务(比如某个特定的 DNS 提供商或者监控平台),Terraform 的原生支持更可靠。
状态管理:谁更省心?
两者都需要状态文件来追踪基础设施的实际状态。区别在于托管方式。
Terraform Cloud 提供免费的远程状态存储(最多 500 个资源),超出后按资源数计费。你也可以用 S3 + DynamoDB 自建后端,但要自己处理锁机制和加密。
Pulumi Cloud 同样提供免费层(个人项目),团队版按资源数计费。Pulumi 的状态管理有个优势:原生支持加密 secrets,不需要额外配置 Vault 或 KMS。
OpenTofu 在这方面走得更远——它原生支持状态文件加密,不依赖任何第三方服务。如果你对数据主权有严格要求,这是个加分项。
性能对比:大规模场景下的差距
社区基准测试显示,在 2000+ 资源的状态文件上,Pulumi 的 plan/preview 操作比 Terraform 快大约 25-30%。这个差距在小项目上感知不明显,但当你管理数百个微服务的基础设施时,每次 plan 少等 30 秒是实打实的效率提升。
Terraform 1.5+ 引入了并行 provider 操作,缩小了一部分差距。但 Pulumi 的并行执行是语言层面的——你可以用 async/await 或 goroutine 来并行创建无依赖关系的资源,控制粒度更细。
团队协作与招聘
这可能是最被低估的决策因素。
Terraform 的人才池远大于 Pulumi。在 LinkedIn 上搜”Terraform”,结果是”Pulumi”的 10 倍以上。HCL 虽然是 DSL,但学习曲线平缓,一个有经验的运维工程师一周内就能上手。
Pulumi 的招聘门槛不同:你需要的是既懂基础设施又能写好 TypeScript/Python 的人。这种人存在,但数量少,薪资高。好消息是,如果你的团队本身就是全栈工程师为主(比如很多 SaaS 创业公司),Pulumi 的学习成本几乎为零——他们已经会写 TypeScript 了。
许可证与供应商风险
Terraform 的 BSL 许可证意味着:你可以免费使用 Terraform CLI,但不能用它来构建与 Terraform Cloud 竞争的商业产品。对大多数用户来说,这个限制不影响日常使用。但它传递了一个信号:HashiCorp(现在是 IBM 旗下)对开源社区的承诺是有条件的。
Pulumi 的 CLI 和 SDK 是 Apache 2.0 开源的,没有使用限制。商业部分是 Pulumi Cloud(状态管理、团队协作、策略引擎),你可以选择不用。
OpenTofu 是 MPL 2.0,由 Linux Foundation 托管,社区治理。它是 Terraform 1.5 的 fork,保持向后兼容,但已经开始加入 Terraform 没有的功能(比如原生状态加密)。
定价对比
| 方案 | 免费层 | 团队版起步价 | 计费模式 |
|---|---|---|---|
| Terraform Cloud | 500 资源 | $20/用户/月 | 按用户 + 资源数 |
| Pulumi Cloud | 个人项目无限 | $50/用户/月(Team) | 按用户 + 资源数 |
| OpenTofu + Spacelift | 1 个 worker | $40/用户/月 | 按用户 + 并发 worker |
| OpenTofu 自托管 | 完全免费 | $0(自建 CI/CD) | 只有基础设施成本 |
怎么选?三个决策路径
选 Terraform 如果:你的团队以运维/SRE 为主,需要最大的生态兼容性,招聘市场是重要考量,且 BSL 许可证对你的业务没有实际影响。
选 Pulumi 如果:你的团队以开发者为主(全栈工程师、SaaS 创业公司),重视代码复用和测试,愿意为更好的开发体验付出更高的人才成本。
选 OpenTofu 如果:你已经在用 Terraform 但对 BSL 许可证有顾虑,想要开源保障,且不需要 Terraform Cloud 的高级功能(或者愿意用 Spacelift/env0 替代)。
FAQ
Terraform 迁移到 Pulumi 难吗?
Pulumi 提供了 tf2pulumi 工具可以自动转换 HCL 代码,但复杂的 module 嵌套和 provider 配置通常需要手动调整。中等规模项目(50-200 个资源)的迁移周期大约 2-4 周。
OpenTofu 能完全替代 Terraform 吗?
对于 Terraform 1.5 及之前的功能,OpenTofu 是 drop-in replacement。但 Terraform 1.6+ 的新功能(比如 import block 的增强)OpenTofu 可能滞后几个月才跟进。
Pulumi 的 Terraform bridge 稳定吗?
主流 provider(AWS、GCP、Azure)的 bridge 非常稳定,生产环境可用。小众 provider 偶尔会有类型映射问题,建议先在测试环境验证。
哪个工具对 AI 辅助编码更友好?
Pulumi 明显更友好。因为它用的是通用编程语言,Copilot 和 Claude 对 TypeScript/Python 的理解远好于 HCL。用 Pulumi 写基础设施代码时,AI 补全的准确率体感高出一截。
小团队(3-5 人)该选哪个?
如果团队全是开发者,选 Pulumi。如果有专职运维,选 Terraform。如果预算紧张且有 DevOps 经验,OpenTofu 自托管是最省钱的方案。
结论
2026 年的 IaC 选型不再是”Terraform 一家独大”的局面。Pulumi 用真编程语言的开发体验赢得了开发者的心,OpenTofu 用开源承诺赢得了对供应商锁定敏感的企业。Terraform 依然是最安全的选择——最大的生态、最多的人才、最成熟的工具链——但它不再是唯一的选择。
我的建议:如果你今天从零开始一个新项目,花半天时间试试 Pulumi。如果你已经有大量 Terraform 代码且运行良好,没必要迁移。如果你对 HashiCorp 的许可证策略感到不安,OpenTofu 是最低成本的保险方案。



