【ぷるみ】

Pulumi とは?

💡 「使い慣れたプログラミング言語」でインフラを書く
📌 このページのポイント
Pulumi — コードでインフラを定義 開発者コード Python / TypeScript Go / C# など インフラ定義 リソース設定 Pulumi エンジン 差分検出 状態管理 クラウド サーバー データベース ネットワーク 汎用言語でインフラを定義 → 自動でクラウドリソースを構築・管理
PulumiによるIaC(Infrastructure as Code)のイメージ
ひよこ ひよこ

Terraformと何が違うの?

ペンギン先生 ペンギン先生

Terraformは独自言語のHCLでインフラを定義する。Pulumiは TypeScriptPython等の汎用プログラミング言語で書く。HCLだとfor_eachやdynamic blockが独特の構文で書きにくいことがあるけど、Pulumiならfor文やif文がそのまま使える。IDEの補完やリファクタリング機能も活用できるのが強みだよ

ひよこ ひよこ

具体的にどう書くの?

ペンギン先生 ペンギン先生

TypeScriptの例だと、import * as aws from '@pulumi/aws'; const bucket = new aws.s3.Bucket('my-bucket', { website: { indexDocument: 'index.html' }}); のように普通のオブジェクト生成で書ける。配列のmapで10個のEC2インスタンスを作ったり、関数でモジュール化したり、テストフレームワークでインフラをテストしたりもできるよ

ひよこ ひよこ

Terraformからの移行は簡単?

ペンギン先生 ペンギン先生

pulumi importコマンドで既存のクラウドリソースをPulumiのステートに取り込める。tf2pulumiというツールでHCLのコードをPulumiに変換することもできる。ただし完全な自動変換は難しい場合もある。新規プロジェクトから始めて、既存のTerraformと共存させながら段階的に移行するのが現実的だよ

ひよこ ひよこ

どっちを選ぶべき?

ペンギン先生 ペンギン先生

チームが特定のプログラミング言語に強いならPulumi、インフラ専門チームで宣言的な記述を好むならTerraformTerraformの方がエコシステムプロバイダーモジュール)が充実していて情報も多い。Pulumiはアプリ開発者がインフラも書くプラットフォームエンジニアリングの文脈で特に支持されているよ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Pulumi」って出てきたら「プログラミング言語でインフラを定義するIaCツール」と思えればだいたいOK!
📖 おまけ:英語の意味
「Pulumi」 = プルミ
💬 ハワイ語で「波」を意味する言葉が由来。クラウドインフラの新しい波だよ
← 用語集にもどる