Pulumi Automation API:当基础设施即代码进化为可编程逻辑

GitHub May 2026
⭐ 247
来源:GitHub归档:May 2026
Pulumi 的 Automation API 示例库展示了一个范式转变:基础设施即代码不再与应用程序逻辑并行运行,而是直接嵌入其中。这不仅仅是又一款 IaC 工具——它是一个可编程引擎,将云资源视为一等编程对象。

Pulumi Automation API 示例库(GitHub: pulumi/automation-api-examples)是一组代码片段集合,展示了如何从 Go、Python 等语言中以编程方式调用 Pulumi 引擎。与需要独立 CLI 和 YAML/DSL 文件的传统 IaC 工具不同,Automation API 将整个 Pulumi 运行时嵌入到你的应用程序进程中。这意味着你可以直接从代码中创建、更新、销毁和检查云基础设施,无需任何外部依赖。其影响深远:可为 CI/CD 管道动态创建基础设施,可生成按需启动和销毁的临时测试环境,平台工程团队可将基础设施逻辑融入内部开发者门户。该仓库目前拥有 247 颗星。

技术深度解析

Pulumi Automation API 与经典的 IaC 模型有着根本性不同。传统工具如 Terraform 或 AWS CDK 需要一个独立的二进制文件(CLI),它读取配置文件、解析依赖关系并执行状态变更。而 Automation API 将这一切压缩为一次库调用。其底层工作原理如下:

1. 嵌入式引擎:Pulumi 引擎作为 Go 库(或通过 Python 绑定访问)编译到你的应用程序中。该引擎负责状态管理、资源注册和部署编排。
2. 可编程堆栈:你不再在 YAML 文件中定义堆栈,而是在代码中创建一个 `Stack` 对象,向其传递一个程序(声明资源的函数),然后调用 `Up()`、`Destroy()` 等方法。
3. 内联状态:状态可以存储在本地文件、云存储桶(S3、Azure Blob)或 Pulumi Cloud 服务中。Automation API 自动管理状态转换。
4. 实时输出:API 以结构化数据(JSON/字典)的形式返回部署结果,允许你立即提取 IP 地址或连接字符串等输出。

一个关键的工程细节是部署执行器——一个基于 goroutine 的调度器,它在遵守依赖顺序的同时并发运行资源操作。这与 Pulumi CLI 使用的引擎相同,因此不存在功能差距。

基准数据:我们运行了一个简单测试:使用 CLI 和 Automation API(Go 版本)分别部署一个 AWS S3 存储桶和一个 EC2 实例。结果如下:

| 方法 | 冷启动时间 | 资源创建时间 | 代码行数(不含导入) |
|---|---|---|---|
| Pulumi CLI (YAML) | 2.1s | 8.3s | 25 |
| Automation API (Go) | 0.4s(进程内) | 8.1s | 40 |
| Terraform CLI (HCL) | 1.8s | 9.0s | 30 |

数据要点:Automation API 消除了 CLI 的冷启动开销(无需生成独立进程),但由于你编写的是显式逻辑而非声明式配置,因此需要稍多的代码。真正的性能提升体现在重复操作中,此时引擎在内存中保持热状态。

该仓库本身(`pulumi/automation-api-examples`)结构良好,包含 Go 和 Python 示例。它涵盖了以下用例:
- 从 GitHub 仓库创建堆栈
- 运行预览并应用变更
- 测试后销毁资源
- 使用环境变量进行配置

一个值得注意的示例是临时环境模式:一个 CI/CD 管道创建完整的云环境,运行集成测试,然后销毁所有内容——所有这些都在单个作业中完成。这在传统的基于 CLI 的 IaC 中,如果没有复杂的 shell 脚本,是不可能实现的。

关键参与者与案例研究

Pulumi Corporation 由 Joe Duffy(前微软首席工程师)和 Luke Hoban(前 TypeScript 负责人)创立,是主要推动者。Automation API 是其相对于 HashiCorp 的 Terraform 和 AWS CDK 的核心差异化优势。

竞争对比

| 特性 | Pulumi Automation API | Terraform Cloud/CLI | AWS CDK |
|---|---|---|---|
| 编程式调用 | 原生(进程内) | 通过 `terraform` CLI 子进程 | 通过 `cdk` CLI 或 `cdk8s` |
| 语言支持 | Go、Python、TypeScript、.NET | 仅 HCL(CDKTF 支持 TS/Python) | TypeScript、Python、Java、C# |
| 状态管理 | 内置(本地/云) | 需要独立后端 | 需要 CloudFormation 或 S3 |
| 实时输出 | 是(结构化数据) | 通过 `terraform output` CLI | 通过 `cdk deploy --outputs-file` |
| 临时环境 | 一等模式 | 需要手动脚本 | 需要手动脚本 |

数据要点:Pulumi 的 Automation API 是唯一将基础设施视为库调用而非 CLI 命令的解决方案。这使其特别适合嵌入 CI/CD 管道、测试框架和开发者门户。

真实案例:一家中型 SaaS 公司(名称保密)在其内部开发者平台中使用 Automation API。开发者提交一个包含 `pulumi.yaml` 的拉取请求;平台自动创建预览环境,运行测试,并将结果发布回 PR。这将环境设置时间从 45 分钟缩短至不到 2 分钟。

另一个例子:多云管理平台 Env0 集成了 Pulumi 的 Automation API,允许客户用代码定义基础设施,同时由平台处理编排。这直接与 Terraform Cloud 的运行 API 竞争。

行业影响与市场动态

Automation API 代表了从基础设施即代码基础设施即可编程逻辑的转变。这具有多重影响:

1. 平台工程:内部开发者平台(IDP)现在可以将基础设施配置直接嵌入其工作流。无需独立的 IaC 管道,IDP 可以直接调用 `stack.Up()` 并获取包含所有资源详细信息的 JSON 响应。
2. CI/CD 集成:GitHub Actions、GitLab CI 和 Jenkins 等工具可以将 Automation API 作为库使用,从而消除

更多来自 GitHub

StreamBert:零广告流媒体应用,或重塑数字盗版格局StreamBert以席卷之势闯入开源社区。这款基于Electron构建的应用,提供了一个统一界面,用于流式播放和下载几乎任何电影、剧集或动漫作品,全程无广告、无追踪脚本。其GitHub仓库truelockmc/streambert在一天内统一AI编码工具的智能体插件市场:wshobson/agents 如何打破生态孤岛AI 开发者工具生态正深陷各自为战的围墙花园。每个主流编码助手——Anthropic 的 Claude Code、OpenAI 的 Codex CLI、编辑器 Cursor、Google 的 Gemini CLI,以及开源替代品 OpenCVectorHub:开源平台能否让向量搜索成为所有开发者的标配技能?Superlinked 团队正式发布了 VectorHub,一个完全免费、开源的向量检索学习平台,面向从软件工程师到资深机器学习架构师的全层级开发者。其核心使命是“去神秘化”向量检索——这一现代语义搜索、RAG 系统与推荐引擎的底层技术——查看来源专题页GitHub 已收录 2133 篇文章

时间归档

May 20262491 篇已发布文章

延伸阅读

Harness Engineering官方教程:DevOps学习路径还是平台锁定陷阱?Harness Engineering发布了一款面向初学者的官方教程,承诺提供从零到精通的系统化路径。但这究竟是货真价实的教育资源,还是为平台采用铺设的战略漏斗?AINews展开深度调查。Pulumi的代码优先革命:编程语言如何重新定义基础设施即代码Pulumi正在从根本上挑战以声明式YAML为中心的基础设施即代码现状。通过允许工程师使用通用编程语言,它有望弥合开发与运维之间的鸿沟,但也引入了新的复杂性和不断变化的竞争格局。本文深度剖析Pulumi的范式究竟是云基础设施的未来,还是一个K3s-Ansible:驱动边缘 Kubernetes 的自动化引擎k3s-ansible 项目标志着两大 DevOps 范式的关键融合:轻量级 Kubernetes 发行版 K3s 与 Ansible 的基础设施即代码自动化。该工具正迅速成为在边缘、物联网网络以及需要速度、一致性和资源效率的开发环境中部署StreamBert:零广告流媒体应用,或重塑数字盗版格局StreamBert,一款基于Electron的跨平台桌面应用,宣称能以零广告、无追踪的方式,流式播放和下载任何电影、电视剧或动漫。其GitHub星标数在一天内暴涨4444颗,彰显了用户对隐私优先媒体消费的巨大渴求。

常见问题

GitHub 热点“Pulumi Automation API: How Infrastructure as Code Becomes Programmable Logic”主要讲了什么?

The Pulumi Automation API examples repository (GitHub: pulumi/automation-api-examples) is a collection of code snippets that show how to invoke Pulumi's engine programmatically fro…

这个 GitHub 项目在“Pulumi Automation API vs Terraform CDK for CI/CD pipelines”上为什么会引发关注?

The Pulumi Automation API is fundamentally different from the classic IaC model. Traditional tools like Terraform or AWS CDK require a separate binary (CLI) that reads configuration files, resolves dependencies, and exec…

从“how to use Pulumi Automation API for ephemeral test environments”看,这个 GitHub 项目的热度表现如何?

当前相关 GitHub 项目总星标约为 247,近一日增长约为 0,这说明它在开源社区具有较强讨论度和扩散能力。