关于 Pulumi CLI
Pulumi CLI 允许使用 TypeScript、Python、Go、.NET 和 Java 等编程语言定义和部署云基础设施。支持基础设施预览、多云提供商选择和堆栈状态管理,使开发人员能够使用熟悉的编程范例进行基础设施管理。
主要功能
- 01使用编程语言定义云基础设施代码
- 02预览基础设施变更后再应用
- 03管理多个云提供商(AWS、Azure、GCP 等)
- 04追踪和管理基础设施堆栈状态
适用场景
- 01使用熟悉的编程语言构建可复用的基础设施模板
- 02在 CI/CD 中自动化云资源配置和更新
- 03跨多个环境和云提供商管理基础设施一致性
安装
选择你的系统或包管理器,复制命令到终端运行。
安装完成后运行pulumi --version确认安装成功。
命令示例
常用命令按使用顺序排列。
详细介绍
面向人类和 Agent 的基础设施即代码
Pulumi 基础设施即代码是构建和部署任意架构、运行于任意云上的基础设施的最简单方式,使用你熟悉且喜爱的编程语言即可。使用你喜爱的语言和工具,更快地编写并交付基础设施代码,还可以通过 Automation API 在任何地方嵌入 IaC。
只需使用你喜爱的语言编写代码,Pulumi 就会自动在以下平台上预配和管理资源: AWS、 Azure、 Google Cloud Platform、 Kubernetes 以及 300+ providers,采用 基础设施即代码的方式。 告别 YAML,使用你熟悉且喜爱的标准语言特性,例如循环、函数、类和包管理。
例如,创建三个 Web 服务器:
import * as aws from "@pulumi/aws";
const ami = aws.ec2.getAmiOutput({
mostRecent: true,
owners: ["amazon"],
filters: [{ name: "name", values: ["al2023-ami-*-x86_64"] }],
});
const sg = new aws.ec2.SecurityGroup("web-sg", {
ingress: [{ protocol: "tcp", fromPort: 80, toPort: 80, cidrBlocks: ["0.0.0.0/0"] }],
});
for (const i of [0, 1, 2]) {
new aws.ec2.Instance(`web-${i}`, {
ami: ami.id,
instanceType: "t3.micro",
vpcSecurityGroupIds: [sg.id],
userData: `#!/bin/bash
echo "Hello, World!" > index.html
nohup python3 -m http.server 80 &`,
});
}
或者创建一个简单的无服务器定时器,每天上午 8:30 归档 Hacker News:
import * as aws from "@pulumi/aws";
import { DynamoDBClient } from "@aws-sdk/client-dynamodb";
import { DynamoDBDocumentClient, PutCommand } from "@aws-sdk/lib-dynamodb";
const snapshots = new aws.dynamodb.Table("snapshots", {
attributes: [{ name: "id", type: "S" }],
hashKey: "id",
billingMode: "PAY_PER_REQUEST",
});
aws.cloudwatch.onSchedule("daily-yc-snapshot", "cron(30 8 * * ? *)", async () => {
const res = await fetch("https://news.ycombinator.com");
const content = await res.text();
const client = DynamoDBDocumentClient.from(new DynamoDBClient({}));
await client.send(new PutCommand({
TableName: snapshots.name.get(),
Item: { id: `${Date.now()}`, content },
}));
});
pulumi/examples 中提供了许多示例,涵盖容器、无服务器和基础设施。
Pulumi 基于 Apache 2.0 license 开源,支持多种语言和云平台,并且易于扩展。此仓库包含 pulumi CLI、语言 SDK 和 Pulumi 核心引擎,各个库则位于各自的仓库中。
欢迎
-
开始使用 Pulumi:使用 Pulumi 在 AWS、Azure、Google Cloud 或 Kubernetes 上部署一个简单的应用程序。
-
学习:通过真实示例学习 Pulumi 学习路径中的最佳实践和架构模式。
-
示例:浏览涵盖多种语言、云平台和场景的多个示例,包括容器、无服务器和基础设施。
-
文档:了解 Pulumi 概念、查阅用户指南和参考文档。
-
Registry:查找包含所需资源的 Pulumi 软件包。将软件包直接安装到项目中,浏览 API 文档并开始构建。
-
密钥管理:借助 Pulumi ESC,安全地管理所有云基础设施和应用程序中的密钥分散问题与配置复杂性。
-
Community Slack:加入 Pulumi Community Slack。欢迎参与所有讨论并提出问题。
-
GitHub 讨论:提问或分享你正在使用 Pulumi 构建的内容。
开始使用
请参阅开始使用指南,快速开始在你选择的平台和云上使用 Pulumi。
或者,以下步骤演示如何在几分钟内使用 AWS 无服务器 Lambda 部署你的第一个 Pulumi 程序:
-
安装:
要安装最新的 Pulumi 版本,请运行以下命令(如需其他安装选项,请参阅完整的 安装说明):
curl -fsSL https://get.pulumi.com/ | sh -
创建项目:
安装后,你可以使用
pulumi new命令开始:mkdir pulumi-demo && cd pulumi-demo pulumi new serverless-aws-typescriptnew命令为所有语言和云平台提供模板。不带参数运行该命令时,它会提示你选择可用项目。此命令会创建一个使用 TypeScript 编写的 AWS 无服务器 Lambda 项目。 -
部署到云端:
运行
pulumi up,将代码部署到云端:pulumi up这会创建运行代码所需的所有云资源。只需修改项目,后续运行
pulumi up时就会计算出最小差异,以部署你的更改。 -
使用你的程序:
代码部署后,你就可以与其交互。在上面的示例中,我们可以使用 curl 请求端点:
curl $(pulumi stack output url) -
查看日志:
如果你使用容器或函数,Pulumi 的统一日志命令会显示所有日志:
pulumi logs -f -
销毁资源:
完成后,你可以移除程序创建的所有资源:
pulumi destroy -y
如需了解更多信息,请访问 pulumi.com,其中提供了更多内容,包括 教程、示例,以及核心 Pulumi CLI 和编程模型概念的详细信息。
平台
语言
| 语言 | 状态 | 运行时 | 版本 | |
|---|---|---|---|---|
| JavaScript | 稳定 | Node.js | 当前、活跃和维护中的 LTS 版本 | |
| TypeScript | 稳定 | Node.js | 当前、活跃和维护中的 LTS 版本 | |
| Python | 稳定 | Python | 支持的版本 | |
| Go | 稳定 | Go | 支持的版本 | |
| .NET (C#/F#/VB.NET) | 稳定 | .NET | 支持的版本 | |
| Java | 稳定 | JDK | 11+ | |
| YAML | 稳定 | n/a | n/a |
云平台
访问注册表,查看受支持的云和基础设施提供商的完整列表。
贡献
有关从源代码构建 Pulumi 或贡献改进的信息,请访问 CONTRIBUTING.md。
