文章目录
- Pulumi:用你熟悉的编程语言写基础设施代码
- 和 Terraform 有什么区别?
- 实际用起来怎么样?
- 支持范围
- 上手门槛
- 适合什么场景?
Pulumi:用你熟悉的编程语言写基础设施代码
搞过运维或者 DevOps 的人都知道,管理云基础设施是个麻烦事。AWS、Azure、GCP、Kubernetes,每个平台都有自己的配置方式,学起来费劲,维护起来更费劲。
Pulumi 这个项目解决的就是这个问题。它的核心思路很简单,用你已经会的编程语言来写基础设施代码。TypeScript、Python、Go、C#、Java 都行,不用再去学专门的 DSL 或者 YAML 配置。
目前这个项目在 GitHub 上有 2.5 万 Star,社区活跃度不低。
和 Terraform 有什么区别?
用过 Terraform 的人可能会问,这俩不都是基础设施即代码工具吗?区别在哪?
最大的区别就是语言选择。Terraform 用的是 HCL,一种专门设计的配置语言。你得从头学语法、学它的思维方式。Pulumi 直接用主流编程语言,变量、函数、循环、条件判断,都是你 already know 的东西。
这意味着什么?意味着你可以用 npm 管理依赖,用 IDE 的自动补全,用单元测试框架写测试。整个软件工程的工具链都能直接用上,不用单独搞一套。
实际用起来怎么样?
看几个代码示例就明白了。
用 TypeScript 创建三台 EC2 实例,逻辑很清晰:先查最新的 AMI,建个安全组,然后循环创建三台机器。for 循环、模板字符串,都是 JavaScript 的标准写法。
再比如写个定时任务,每天早上 8 点半抓取 Hacker News 的内容存到 DynamoDB。CloudWatch Event 触发 Lambda 函数,整个逻辑用普通的 async/await 写,和写业务代码没什么区别。
这种写法的好处是,复杂逻辑可以直接用代码表达。条件判断、错误处理、资源之间的依赖关系,都能用编程语言的原生能力搞定。不用在 YAML 里写一堆难以维护的嵌套配置。
支持范围
语言方面,主流的基本都覆盖了:JavaScript、TypeScript、Python、Go、.NET(C#/F#/VB.NET)、Java、甚至 YAML。云平台方面,AWS、Azure、GCP、Kubernetes 都是原生支持,官方说有 300 多个 provider。
基本上你能想到的云服务,都能通过 Pulumi 来管理。而且因为是开源的,自己写 provider 也行。
上手门槛
安装很简单,一行命令搞定。创建项目用pulumi new,它有现成的模板,选好语言和云平台就能开始。部署用pulumi up,它会自动计算需要创建哪些资源,给你一个预览,确认后才执行。
修改基础设施也很方便。改完代码再跑一次pulumi up,它会自动算出差异,只部署变更的部分。这个流程和 Git 的工作方式很像,改代码、提交、部署。
适合什么场景?
如果你的团队已经在用 TypeScript 或者 Python 写业务代码,Pulumi 的上手成本会很低。不用额外学新语言,直接用熟悉的工具链。
另外,Pulumi 有个 Automation API,可以把基础设施管理嵌入到应用程序里。这个能力比较少见,适合需要动态创建资源的场景,比如 SaaS 平台给每个客户自动创建环境。
开源协议是 Apache 2.0,商业项目用也没问题。CLI 和核心引擎在这个仓库里,各个语言的 SDK 在各自的仓库中。
总的来说,Pulumi 不是什么全新的概念,它做的事情 Terraform 也在做。但它选择了一条更务实的路:不发明新语言,直接用现有的。对开发者来说,学习成本低,开发效率高。如果你正在评估基础设施即代码工具,Pulumi 值得花半天时间试一下。
者来说,学习成本低,开发效率高。如果你正在评估基础设施即代码工具,Pulumi 值得花半天时间试一下。