Pulumi:用你熟悉的编程语言写基础设施代码
文章目录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、.NETC#/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 值得花半天时间试一下。