Pulumi CLI について
Pulumi CLI は TypeScript、Python、Go、.NET、Java などのプログラミング言語を使用してクラウドインフラストラクチャを定義およびデプロイできます。インフラストラクチャプレビュー、マルチクラウドプロバイダー選択、スタック状態管理をサポートし、開発者が馴染みのあるプログラミングパラダイムでインフラストラクチャを管理できるようにします。
主な機能
- 01プログラミング言語を使用してクラウドインフラストラクチャコードを定義する
- 02インフラストラクチャの変更を適用する前にプレビューする
- 03複数のクラウドプロバイダー (AWS、Azure、GCP など) を管理する
- 04インフラストラクチャスタックの状態を追跡して管理する
活用シーン
- 01馴染みのあるプログラミング言語を使用して再利用可能なインフラストラクチャテンプレートを構築する
- 02CI/CD でクラウドリソースプロビジョニングと更新を自動化する
- 03複数の環境とクラウドプロバイダー全体でインフラストラクチャの一貫性を管理する
インストール
OS またはパッケージマネージャーを選び、コマンドをターミナルで実行します。
インストール後にpulumi --versionを実行して確認します。
コマンド例
よく使うコマンドを使う順に並べています。
詳細
人とエージェントのための Infrastructure as Code
Pulumi Infrastructure as Code は、使い慣れたプログラミング言語を使って、あらゆるアーキテクチャやクラウド上でインフラストラクチャを構築、デプロイする最も簡単な方法です。お気に入りの言語やツールでインフラストラクチャのコード作成とデプロイを高速化し、Automation API を使えば、どこにでも IaC を組み込めます。
お気に入りの言語でコードを書くだけで、Pulumi が AWS、 Azure、 Google Cloud Platform、 Kubernetes、および 300+ providers 上のリソースを、 infrastructure-as-code のアプローチで自動的にプロビジョニングして管理します。 YAML を使う代わりに、ループ、関数、クラス、パッケージ管理など、使い慣れた標準的な言語機能を活用できます。
たとえば、3 台の 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 の概念について学び、ユーザーガイドを参照し、リファレンスドキュメントをご確認ください。
-
レジストリ:必要なリソースを含む Pulumi パッケージを見つけましょう。パッケージをプロジェクトに直接インストールし、API ドキュメントを参照して、開発を始められます。
-
シークレット管理:Pulumi ESC を使って、すべてのクラウドインフラストラクチャとアプリケーションにわたるシークレットの散在や設定の複雑さを、安全に解消できます。
-
コミュニティ Slack:Pulumi Community Slack にご参加ください。あらゆる会話や質問を歓迎します。
-
GitHub ディスカッション:質問したり、Pulumi で構築しているものを共有したりできます。
はじめに
はじめ方ガイドを参照して、お好みのプラットフォームとクラウドで Pulumi をすばやく始めましょう。
または、以下の手順に沿って、AWS Serverless 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 Serverless 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 版、メンテナンス中の LTS 版 | |
| TypeScript | 安定版 | Node.js | 現行版、アクティブな LTS 版、メンテナンス中の LTS 版 | |
| Python | 安定版 | Python | サポート対象バージョン | |
| Go | 安定版 | Go | サポート対象バージョン | |
| .NET (C#/F#/VB.NET) | 安定版 | .NET | サポート対象バージョン | |
| Java | 安定版 | JDK | 11+ | |
| YAML | 安定版 | 該当なし | 該当なし |
クラウド
サポート対象のクラウドおよびインフラストラクチャプロバイダーの全一覧は、レジストリをご覧ください。
貢献
ソースから Pulumi をビルドする方法や改善への貢献については、CONTRIBUTING.mdをご覧ください。
