Infrastructure-as-Codeアプローチと「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はインターネット上で2つのエンドポイント(web application用/REST API用、どちらも「app.pulumi.com」)が提供されます。Pulumi Serviceは管理対象のインフラストラクチャとは直接通信しないため、Pulumi Service側でインフラストラクチャのクレデンシャル情報を要求することはありません。代わりに、クライアントCLI側でPulumi Serviceとインフラストラクチャの双方と通信する形になります。Pulumi Service自体はSOC2やpen-testingなど複数の監査を経てセキュリティが担保され、安全に管理されています。
ちなみに、下図のようにPulumi Service自体を好みのプライベートクラウド環境(AWS/Azure/GCP/Kubernetesなど)に自前でホストすることも可能で、インターネットアクセスを発生させないような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アプローチを体験していただければと思います。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- Policy as Codeでインフラのコンプライアンスを自動実現! 「Pulumi CrossGuard」を活用してみよう
- TerraformからPulumiへの移行
- PulumiでAWSリソースをデプロイしよう
- 既に存在するリソースをPulumiで管理してみよう
- SecretもPulumiで使いこなしたい! PulumiのSecurityを試してみよう
- Pulumi Kubernetes Operatorを活用してPulumiのCI/CDを実現しよう
- 「Pulumi Stack」とは ー Pulumiによるマルチステージ環境の構築方法
- 「Pulumi Automation API」でPulumi CLIの機能をコード化しよう
- Pulumiの最新機能「Pulumi ESC」を使ってみよう
- Oracle Cloud Hangout Cafe Season7 #2「IaC のベストプラクティス」(2023年7月5日開催)