pulumi/pulumi

GitHub: pulumi/pulumi

Pulumi 是一个允许开发者使用 TypeScript、Python、Go 等通用编程语言来定义、部署和管理云基础设施的现代化「基础设施即代码」平台。

Stars: 25029 | Forks: 1348

[![Slack](http://www.pulumi.com/images/docs/badges/slack.svg)](https://slack.pulumi.com/) [![GitHub Discussions](https://img.shields.io/github/discussions/pulumi/pulumi)](https://github.com/pulumi/pulumi/discussions) [![NPM version](https://badge.fury.io/js/%40pulumi%2Fpulumi.svg)](https://npmjs.com/package/@pulumi/pulumi) [![Python version](https://badge.fury.io/py/pulumi.svg)](https://pypi.org/project/pulumi) [![NuGet version](https://badge.fury.io/nu/pulumi.svg)](https://badge.fury.io/nu/pulumi) [![GoDoc](https://godoc.org/github.com/pulumi/pulumi?status.svg)](https://godoc.org/github.com/pulumi/pulumi) [![License](https://img.shields.io/github/license/pulumi/pulumi)](LICENSE) # 以任意编程语言实现的基础设施即代码 **Pulumi 基础设施即代码** 是使用您已熟知并喜爱的编程语言,在任何云平台上构建和部署任何架构基础设施的最简单方式。使用您偏爱的语言和工具更快速地编码并交付基础设施,并通过 [Automation API](https://www.pulumi.com/docs/iac/using-pulumi/automation-api/) 将 IaC 嵌入到任何地方。 只需使用您喜欢的语言编写代码,Pulumi 就会自动在以下平台上配置和管理您的资源: [AWS](https://www.pulumi.com/docs/iac/clouds/aws/), [Azure](https://www.pulumi.com/docs/iac/clouds/azure/), [Google Cloud Platform](https://www.pulumi.com/docs/iac/clouds/gcp/), [Kubernetes](https://www.pulumi.com/docs/iac/clouds/kubernetes/), 以及 [120 多个提供商](https://www.pulumi.com/registry/),采用 [基础设施即代码](https://www.pulumi.com/what-is/what-is-infrastructure-as-code/) 方式。 跳过 YAML,使用您已熟知并喜爱的标准语言功能,如循环、函数、类 以及包管理。 例如,创建三个 Web 服务器: ``` const aws = require("@pulumi/aws"); const sg = new aws.ec2.SecurityGroup("web-sg", { ingress: [{ protocol: "tcp", fromPort: 80, toPort: 80, cidrBlocks: ["0.0.0.0/0"] }], }); for (let i = 0; i < 3; i++) { new aws.ec2.Instance(`web-${i}`, { ami: "ami-7172b611", instanceType: "t2.micro", vpcSecurityGroupIds: [sg.id], userData: `#!/bin/bash echo "Hello, World!" > index.html nohup python -m SimpleHTTPServer 80 &`, }); } ``` 或者一个简单的无服务器计时器,每天上午 8:30 归档 Hacker News: ``` const aws = require("@pulumi/aws"); 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 * * ? *)", () => { require("https").get("https://news.ycombinator.com", res => { let content = ""; res.setEncoding("utf8"); res.on("data", chunk => content += chunk); res.on("end", () => new aws.sdk.DynamoDB.DocumentClient().put({ TableName: snapshots.name.get(), Item: { date: Date.now(), content }, }).promise()); }).end(); }); ``` 在 [pulumi/examples](https://github.com/pulumi/examples) 中提供了涵盖容器、无服务器和基础设施的 许多示例。 Pulumi 在 [Apache 2.0 许可证](https://github.com/pulumi/pulumi/blob/master/LICENSE) 下开源,支持多种语言和云平台,并且易于扩展。本仓库包含 `pulumi` CLI、语言 SDK 和核心 Pulumi 引擎,而各个单独的库位于它们自己的仓库中。 ## 欢迎 * **[开始使用 Pulumi](https://www.pulumi.com/docs/iac/get-started/)**:使用 Pulumi 在 AWS、Azure、Google Cloud 或 Kubernetes 中部署一个简单的应用程序。 * **[学习](https://www.pulumi.com/tutorials/)**:遵循 Pulumi 学习路径,通过真实的示例学习最佳实践和架构模式。 * **[示例](https://github.com/pulumi/examples)**:浏览多种语言、云平台和场景下的多个示例, 包括容器、无服务器和基础设施。 * **[文档](https://www.pulumi.com/docs/)**:了解 Pulumi 概念,遵循用户指南,并查阅参考文档。 * **[Registry](https://www.pulumi.com/registry/)**:查找包含您所需资源的 Pulumi 包。将包直接安装到您的项目中,浏览 API 文档,然后开始构建。 * **[Secrets 管理](https://www.pulumi.com/product/secrets-management/)**:使用 Pulumi ESC 安全地管理所有云基础设施和应用程序中的 Secrets 扩散和配置复杂性。 * **[Pulumi 路线图](https://github.com/orgs/pulumi/projects/44)**:查看即将到来的季度计划工作,以及我们关注但尚未排期的选定议题积压。 * **[Community Slack](https://slack.pulumi.com/)**:加入 Pulumi Community Slack。欢迎所有的对话和问题。 * **[GitHub Discussions](https://github.com/pulumi/pulumi/discussions)**:提问或分享您使用 Pulumi 构建的成果。 ## 入门指南 [![观看视频](/youtube_preview_image.png)](https://www.youtube.com/watch?v=6f8KF6UGN7g) 请参阅 [入门指南](https://www.pulumi.com/docs/iac/get-started/) 以在您选择的平台和云上 快速开始使用 Pulumi。 或者,以下步骤演示了如何在几分钟内部署您的第一个 Pulumi 程序,使用 AWS 无服务器 Lambda: 1. **安装**: 要安装最新的 Pulumi 版本,请运行以下命令(有关其他安装选项,请参阅完整的 [安装说明](https://www.pulumi.com/docs/iac/download-install/)): curl -fsSL https://get.pulumi.com/ | sh 2. **创建项目**: 安装完成后,您可以使用 `pulumi new` 命令开始: mkdir pulumi-demo && cd pulumi-demo pulumi new serverless-aws-typescript `new` 命令为所有语言和云平台提供[模板](https://github.com/pulumi/templates/)。不带参数运行它,它会提示 您可用的项目。此命令创建一个用 TypeScript 编写的 AWS Serverless Lambda 项目。 3. **部署到云端**: 运行 `pulumi up` 将您的代码部署到云端: pulumi up 这将创建运行代码所需的所有云资源。只需对项目进行编辑,随后的 `pulumi up` 将计算最小差异以部署您的更改。 4. **使用您的程序**: 既然代码已部署,您就可以与它交互。在上面的示例中,我们可以 curl 该 endpoint: curl $(pulumi stack output url) 5. **访问日志**: 如果您使用容器或函数,Pulumi 的统一日志命令将显示您的所有日志: pulumi logs -f 6. **销毁您的资源**: 完成后,您可以删除程序创建的所有资源: pulumi destroy -y 要了解更多信息,请前往 [pulumi.com](https://pulumi.com/) 获取更多信息,包括 [教程](https://www.pulumi.com/tutorials/)、[示例](https://github.com/pulumi/examples),以及 核心 Pulumi CLI 和[编程模型概念](https://www.pulumi.com/docs/iac/concepts/) 的详细信息。 ## 平台 ### 语言 | | 语言 | 状态 | 运行时 | 版本 | | -- | -------- | ------ | ------- | -------- | | | [JavaScript](https://www.pulumi.com/docs/iac/languages-sdks/javascript/) | 稳定版 | Node.js | [Current、Active 和 Maintenance LTS 版本](https://nodejs.org/en/about/previous-releases) | | | [TypeScript](https://www.pulumi.com/docs/iac/languages-sdks/javascript/) | 稳定版 | Node.js | [Current、Active 和 Maintenance LTS 版本](https://nodejs.org/en/about/previous-releases) | | | [Python](https://www.pulumi.com/docs/iac/languages-sdks/python/) | 稳定版 | Python | [受支持的版本](https://devguide.python.org/versions/#versions) | | | [Go](https://www.pulumi.com/docs/iac/languages-sdks/go/) | 稳定版 | Go | [受支持的版本](https://go.dev/doc/devel/release#policy) | | | [.NET (C#/F#/VB.NET)](https://www.pulumi.com/docs/iac/languages-sdks/dotnet/) | 稳定版 | .NET | [受支持的版本](https://dotnet.microsoft.com/en-us/platform/support/policy/dotnet-core#lifecycle) | | | [Java](https://www.pulumi.com/docs/iac/languages-sdks/java/) | 稳定版 | JDK | 11+ | | | [YAML](https://www.pulumi.com/docs/iac/languages-sdks/yaml/) | 稳定版 | n/a | n/a | ### 已终止发行版本 Pulumi CLI v1 和 v2 已不再支持。如果您尚未运行 v3,请考虑迁移到 v3 以继续享受 Pulumi 提供的最新最强大的功能!:muscle: * 要从 v2 迁移到 v3,请参阅我们的 [v3 迁移指南](https://www.pulumi.com/docs/iac/download-install/migrating-3.0/)。 ### 云平台 访问 [Registry](https://www.pulumi.com/registry/) 获取受支持的云和基础设施提供商的完整列表。 ## 贡献 请访问 [CONTRIBUTING.md](https://github.com/pulumi/pulumi/blob/master/CONTRIBUTING.md) 以获取有关从源代码构建 Pulumi 或贡献改进的信息。
标签:AWS, Azure, CMS安全, DNS解析, DPI, EC2, EVTX分析, GCP, Go, Google Cloud, IaC, JavaScript, JS文件枚举, MITM代理, Python, Ruby工具, Serverless, SOC Prime, TypeScript, 云资源管理, 多云管理, 多人体追踪, 子域名突变, 安全插件, 容器编排, 开发工具, 开源框架, 开源项目, 持续部署, 持续集成, 无后门, 日志审计, 漏洞利用检测, 自动化API, 自动化运维, 资源编排, 逆向工具