Infrastructure-as-Codeアプローチと「Pulumi」の概要

2023年2月14日(火)
大関 研丞 (Kenneth Ozeki)
第1回となる今回は、IaC(Infrastructure-as-Code)の基礎知識とPulumiの概要を解説します。

Pulumiの主な構成

Pulumiは、主に下図のような構成になります。

Pulumi利用時の流れのイメージ【引用】Pulumi公式ホームページより

  • Program
    インフラストラクチャのあるべき姿を定義したもの。GoやPython、JavaScript、TypeScript、C#などの主要な開発言語で作成可能。
  • Resource
    インフラストラクチャを構成するオブジェクト(実際のインフラリソース)。オブジェクトのプロパティ(設定値)は他のオブジェクトに共有することが可能(図のInputs/Outputsの部分)。
  • Project
    Programのソースコードとメタデータ(どのようにProgramを動かすかの情報)を格納するディレクト。
  • Stack
    Projectディレクトリ内でProgramを「pulumi up」(Pulumi CLIコマンド実行)した後のインスタンス。同一のProgramから本番環境/ステージング環境など、用途に応じて複数の環境用にインスタンスを作成が可能。

また、公式HPの図には記載されていませんが、Projectの上位の構成として「Organization」を作成することもできます。Organizationは複数のProjectを1つにまとめ、Organizationに紐づいているメンバーにProjectへのアクセス権限を与えたり、Organization単位でのポリシー設定や料金の管理ができます。

Pulumi Service

Pulumiを語る上で欠かせないものが、SaaSとして提供される「Pulumi Service」です。Pulumiのデフォルト設定では、リソース状態を記録したファイル(State)はPulumi Serviceで保管/管理されます。

ファイル(State)の保管以外にも、リソース変更履歴の閲覧、アクセストークンの管理、監査ログの取得、料金の管理、RBAC制御、CI/CDインテグレーション設定、サポート問い合わせなど、Pulumi ServiceのGUIコンソール画面から様々な設定が可能です(一部の機能は有償のエンタープライズ版でのみ利用可能)。

Pulumi Service ダッシュボード

Pulumi Serviceはインターネット上で2つのエンドポイント(web application用/REST API用、どちらも「app.pulumi.com」)が提供されます。Pulumi Serviceは管理対象のインフラストラクチャとは直接通信しないため、Pulumi Service側でインフラストラクチャのクレデンシャル情報を要求することはありません。代わりに、クライアントCLI側でPulumi Serviceとインフラストラクチャの双方と通信する形になります。Pulumi Service自体はSOC2やpen-testingなど複数の監査を経てセキュリティが担保され、安全に管理されています。

Pulumi Serviceアーキテクチャ【引用】Pulumi公式ホームページより

ちなみに、下図のようにPulumi Service自体を好みのプライベートクラウド環境(AWS/Azure/GCP/Kubernetesなど)に自前でホストすることも可能で、インターネットアクセスを発生させないようなPulumi利用環境を構築できます。

self-hosted Pulumi Service【引用】Pulumi公式ホームページより

Pulumi Serviceの利用にはアカウントの作成が必要となります。アカウントを作成すると、後述するPulumiの料金プランのうち「Individualプラン(個人利用プラン/無料)」が適用されます。

Pulumiの料金(2023年1月17日現在)

Pulumiはオープンソースのため、個人利用する分には料金は掛かりません。また15人までの複数人利用プラン(Teamプラン)では150kクレジットまで毎月無料で利用できます。15人を超える複数人利用や、企業単位で利用する場合には以下の有償プランが用意されています。料金やプラン内容について今後変動する可能性もあるので、実際に利用する際は公式HPを確認してください。

Individual Team Enterprise BusinessCritical
無料 $1 / 2000クレジット($0.0005 / 1クレジット)
150Kクレジット/月まで無料
(毎月200リソース程度無料)
要問い合わせ 要問い合わせ
・1メンバーまで(個人利用)
・state/secret管理
・無制限のデプロイ
Hosted deployments
(プレビュー)
Individualプランに以下追加
・10メンバーまで
・無制限stack
・同時アップデート(5アップデート)
・CI/CDアシスタント
・webhooks
Teamプランに以下追加
・無制限メンバー/チーム
・RBAC(Role-based access control)利用
・SAML/SSO
・コミット割引
・既存のIaC->Pulumi変換が含まれる
・サポートサービス (12 x 5)
Enterpriseに以下追加
・組織ポリシー機能
セルフホスティング利用
・自動グループおよびユーザー同期(SCIM)
・エクスポート可能な監査ログ
・プライベートSlackチャンネル
・トレーニング、オンボーディング、ワークショップ
・プロフェッショナルサービス
・サポートサービス (24 x 7)

※1クレジット → Pulumi Programに定義された1つのリソースを1時間利用した時の1単位

おわりに

駆け足となりましたが、ここまでInfrastructure-as-CodeアプローチとPulumiの概要について解説しました。ある程度Pulumiの構成や利用イメージについて押さえておくと、次回以降で解説するハンズオンの内容の理解にもつながるかと思います。この機会にぜひ、PulumiによるInfrastructure-as-Codeアプローチを体験していただければと思います。

【参考】Pulumi公式ホームページ(英語)

著者
大関 研丞 (Kenneth Ozeki)
クリエーションライン株式会社 Data Platform Team
前職では保険や金融エンタープライズのミッションクリティカルシステム(オンプレミス、仮想サーバー、CDN等のインフラ系業務)の設計/構築を経験。クリエーションラインに転職後はクラウドエンジニアとしてGCP関連の案件でインフラの設計/構築、IaCやCI/CDを用いたDevOpsの導入、コンテナ(Kubernetes)基盤の構築、運用自動化ツールの作成などを担当。
クリエーションラインの技術ブログをチェック

連載バックナンバー

システム運用技術解説
第10回

Pulumiの最新機能「Pulumi ESC」を使ってみよう

2023/12/26
最終回となる今回は、2023年12月時点でリリースされている新機能の紹介と、その新機能の中から「Pulumi ESC」を用いたハンズオンを実践していきます。
システム運用技術解説
第9回

TerraformからPulumiへの移行

2023/11/28
第9回となる今回は、既にTerraformでAWS環境に作成されているリソースをPulumiへ移行するケースを想定して、CoexistenceとConversionのハンズオンを実践していきます
システム運用技術解説
第8回

既に存在するリソースをPulumiで管理してみよう

2023/10/19
第8回となる今回は、既にクラウド環境にデプロイされているリソースをPulumiで管理(import)する方法について、ハンズオンで実践していきます。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています