当前位置: 首页 > news >正文

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、.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 值得花半天时间试一下。

http://www.jsqmd.com/news/1113447/

相关文章:

  • 年复合增长率10.0%!大数据精准营销2026-2032年发展路径清晰
  • 稀土化合物到底是什么?一篇讲清楚它的真实作用
  • 10个生产环境验证的特征工程技巧:从数据清洗到模型提效
  • 从 ASCII 到 UTF-8:一部字符集的发展史
  • 基于pytest Hook机制构建测试失败智能报警系统
  • Java计算机毕设之基于 SpringBoot 的员工合同归档与薪资发放管理系统的设计与实现 基于 SpringBoot 的企业员工综合考评与薪酬分析系统(完整前后端代码+说明文档+LW,调试定制等)
  • Java毕设项目:基于 SpringBoot 的员工合同生命周期管理系统的设计与实现 基于 SpringBoot 的企业员工薪酬数据统计研判系统的 (源码+文档,讲解、调试运行,定制等)
  • Unity在安卓端如何调试输出信息
  • VinXiangQi:如何用AI技术让传统象棋焕发新生?[特殊字符]
  • 北京市知识产权试点优势单位各区奖补政策
  • 让 TLS 指纹与 UA 一致的抓包分析工具
  • VirtualAPK插件化安全加固:从DEX加密到函数抽取的纵深防御实践
  • React入门首选:create-react-app
  • 从Notebook到生产环境的ML模型落地实战指南
  • 第一章 多相流基础(一)---多相流的基本概念
  • 软件审计风暴下,企业如何用自动化工具守住合规底线?
  • 【全英文期刊收集】
  • 从人工粗放巡检到数字精益管控,工业人员定位系统让安全管控有据可依
  • 如何用Python剪映API解锁视频批量处理的技术自动化
  • 灭蚊神器到底有用吗?室内灭蚊灯哪个牌子好?盘点10款优秀灭蚊灯综合实测,放心购!
  • 破界渲染:WinForm下的FFmpeg+Vortice极速推流引擎
  • 海思3519DV500 深度学习模型转换流程
  • 本地maven,项目没有启动按钮或有报红(缺少依赖),解决方法
  • Claude API 销售话术优化:从客户异议到成交建议
  • DRG存档编辑器:5分钟掌握《深岩银河》游戏数据修改技巧
  • 三步永久保存微信聊天记录:WeChatMsg让你的数字记忆永不丢失
  • 线性回归实战:从最小二乘到残差诊断与模型解释性
  • Cinux: 加载第一个内核:从 bootloader 跳进 C++
  • 偏科不用慌!长桥一对一补差,补齐高考短板
  • 炭黑在氮化镓(GaN)的作用