【ぷるみ】
Pulumi とは?
最終更新:
💡 「使い慣れたプログラミング言語」でインフラを書く
TypeScript、Python、Goなどの汎用プログラミング言語でクラウドの構成を定義できるIaC(Infrastructure as Code)ツール。Terraformと並んで比較されることが多い。
📌 このページのポイント
- TypeScript/JavaScript、Python、Go、C#などの.NET言語、Javaで書ける。Pulumi YAMLやHCLにも対応する
- 条件分岐やループ、関数、クラスといった言語の機能でインフラの定義をまとめられる
- AWS、Azure、Google Cloud、Kubernetesなど多くの対象をプロバイダー経由で扱える
- プログラムが表す「望む状態」と記録済みの状態を比べ、作成・更新・削除する内容をpulumi previewで確認してから反映する
Terraformと何が違うの?
具体的にどう書くの?
TypeScriptなら、import * as aws from '@pulumi/aws'; const bucket = new aws.s3.Bucket('my-bucket'); のように、リソースをオブジェクトとして作る形で書くよ。ここで大事なのは、この1行を実行した瞬間にバケットが作られるわけじゃないこと。プログラムはまず「こういう状態にしたい」という登録をエンジンに渡すんだ
じゃあ、実際にはいつ作られるの?
どっちを選ぶべき?
もっと詳しく知りたい人へ
Terraformで管理している環境は、全部書き直さないとPulumiに移れないの?
一度に書き直す必要はありません。Pulumiの公式ガイドでは、pulumi convert --from terraformでHCLのコードをPulumiのプログラムに変換する方法(未対応部分はTODOとして残る)、既存リソースをPulumiの状態に取り込むpulumi import、Terraformの状態ファイルの出力値を参照して共存する方法、既存のTerraformモジュールをそのまま使う方法が紹介されています。変換後はpulumi previewで、意図しない作成や削除が出ないかを確認してから反映します。
📖 おまけ:英語の意味
「Pulumi」 = ハワイ語で「ほうき」
💬 創業者のJoe Duffyによると、Pulumiはハワイ語で「ほうき(broom)」を意味する言葉で、亡き恩師Chris Brummeさんへの敬意を込めて名付けたそうだよ(名字の読みとbroomを掛けている)