Pulumiの最新機能「Pulumi ESC」を使ってみよう
はじめに
本連載も、今回で最終回となります。今回は、2023年12月時点で比較的最近リリースされたPulumiの新機能について、その一部を紹介したいと思います。また、後半では「Pulumi ESC」を用いたハンズオンも実施していきます。
Pulumiで最近リリースされた機能(2023年12月時点)
本稿で紹介する機能は、2023年12月時点での情報となります。Pulumiに関する最新の情報は、主にPulumi Blogなどでご確認ください。
Pulumi AI
Pulumi AIは、自然言語を使用してPulumiのIaCプログラムを生成するPulumiサービス(SaaS)に組み込まれたAIアシスタント機能で、2023年4月ごろにリリースされました。2023年12月時点で自然言語は英語のみ利用可能ですが、生成したいPulumiプログラムの言語を選択してからリソースの要件を英語で入力すると、即座に要件に沿ったPulumiプログラムが生成されます。
Pulumi AIはブラウザ版とCLI版が用意されており、どちらも無料で利用できますが、CLI版は2023年12月時点ではexperimental(実験運用段階)となります。なお、ブラウザ版はこちらからすぐに利用できるので、ぜひこの機会に試してみてください。
Pulumi AIで利用される言語モデルは、PulumiのドキュメンテーションやPulumi Registry(GCP/AWSなどのproviderのAPI Docs)といったPulumiに関するナレッジを活用してカスタムトレーニングされたGPT-4が利用されています。
ただし、筆者の所感となりますが、比較的シンプルなリソース要件であればPulumi CLIで即時実行可能なプログラムが生成されやすいですが、リソース要件が複雑になればなるほど、そのままでは実行できない(いくつかエラーを含んだ)プログラムが生成されやすくなるので注意が必要です。精度については今後に期待ですね。エラーが出た際はエラー文をそのままPulumi AIに貼り付ければ再度コードを出力してくれます。
Pulumi Deployments
Pulumi Deploymentsは、CI/CDシステムの構築のみならず「pulumi up」をPulumi Cloudで実行するための環境(computeリソース)や、source code/credential/環境変数/buildの設定などの集中管理、REST APIを用いたリソースデプロイの仕組みの提供など、インフラストラクチャをPulumi CloudやREST APIで集中管理するためのフルマネージドプラットフォームです。プレビューでの提供が続いていましたが、2023年10月に一般提供が開始されたことで、Pulumi Deploymentsの機能改善と新たな料金プランが提供されています。Pulumi Deploymentsの設定はPulumi Cloudコンソール画面から [Stacks] → [(設定したStack名)] → [Deployments]タブから行うことができます。
新しい料金プランでは、個人利用(Individual)において制限はあるものの、Pulumi Deploymentsを無料で利用できます。Pulumi ESC
Pulumi ESC(Environments, Secrets, and Configuration)は、複数のソースに格納されたシークレットや変数、Configなどを統合管理して、Pulumi Programのデプロイなどに利用できるCLIベースのサービスです。2023年10月ごろにプレビュー版がリリースされ、現状で一般提供の開始時期はまだ予定されていませんが、Pulumiのアカウントがあれば誰でも無料で利用できます。
また、AWSやGCPなどのプロバイダーへの接続に必要なクレデンシャル情報をPulumi ESCが動的に生成してくれる機能もあります。プロバイダー認証にESCを利用することで、ローカル作業環境への認証情報の設定やチームメンバー間の認証情報のやり取りが不要となり、クラウドインフラのよりセキュアな運用を実現できます。
$ esc run <your-pulumi-org-name>/<your-environment-name> -i aws s3 ls【Pulumi ESC CLIを介してクレデンシャルが生成されプロバイダー認証が行われる】
複数のソースに格納されたシークレットを統合的に管理できるPulumi ESCですが、基本的にPulumi Cloudと連携されているため、Pulumi Cloud自体に格納したシークレットや変数などもESCを介して利用できます。
Pulumi ESCを利用した動的認証の方法については、以降のハンズオンで紹介していきます。
【ハンズオン】Pulumi ESCを利用したAWSの動的認証
ハンズオンの流れ
今回はPulumi ESCを介したプロバイダー認証を行いますが、Pulumi Programは作成しません。ローカルPC環境にてAWSのクレデンシャル情報が設定されていない状態で、Pulumi ESCを介して「aws s3 ls」コマンドが実行できるか(AWSへの認証が可能か)確認します。作業は主にMacOSのターミナルを利用します。
前提
- ハンズオンを実施する上で必要なAWSのアクセス権限を有する(role作成など)
- PCにPythonを導入済み(version 3.7以上)
- awsコマンドインストール済み(ハンズオン動作確認用)
事前準備
Pulumiを利用したAWSリソースデプロイのハンズオンを実施するには、事前に以下の作業が実施済みである必要があります。なお、事前準備の手順は第2回で紹介していますので、まだ実施されていない方はそちらをご確認ください。
- Pulumi CLIのインストール
- PCにPythonを導入済み(version 3.7以上)
- Pulumiアカウント新規作成
- AWSアカウントへのPulumiアクセス設定
Pulumi ESC CLIのインストール/ログイン
- Pulumi ESCをローカルの作業PCにインストールします。筆者の作業PCはmacOSですが、WindowsやLinuxへのインストールについてはこちらをご確認ください。
$ brew update && brew install pulumi/tap/esc
- インストールが完了したらPulumi ESC CLIのログインを実施します。ログインアカウントはPulumiアカウントと同一です。
$ esc login
OIDC(OpenID Connect)の設定
Pulumi ESCからプロバイダーへの認証方法は2通りあります。1つは前述した通り、Pulumi ESCと連携されているPulumi Cloudにあらかじめプロバイダーへの認証情報を格納してESCで認証する方法、もう1つはOIDCを利用して認証する方法です。前者はプロバイダー(AWS)側でクレデンシャル情報を発行する必要があるため、それを紛失した際のリスクを考慮するとOIDCを利用する方が好ましいです。ここでは、OIDCを利用するための設定を実施します。
- AWSマネジメントコンソールにログインして、[Identity and Access Management (IAM)] → [ID プロバイダ]に遷移します。
- [プロバイダを追加]から、以下の情報を入力(選択)していきます。プロバイダのURLを入力後は[サムプリントを取得]をクリックして、サムプリントを手元に保管しておきます。一通り完了したら、画面下部の[プロバイダを追加]をクリックします。
- プロバイダのタイプ:OpenID Connect
- プロバイダのURL:https://api.pulumi.com/oidc
- 対象者:Pulumiアカウント名(組織名)
- プロバイダの作成が完了すると、自動的に前の画面へ遷移して「IAMロールを割り当てる必要があります」と表示されるので、画面上部の[ロールの割り当て]をクリックします。
- 「新しいロールを作成」を選択した状態で、[次へ]をクリックします。
- 「信頼されたエンティティを選択」画面で以下を選択して、[次へ]をクリックします。
- 信頼されたエンティティタイプ:ウェブアイデンティティ
- ウェブアイデンティティ - アイデンティティプロバイダー:api.pulumi.com/oidc
- ウェブアイデンティティ - Audience:先ほど選択したPulumiアカウント名(組織名)
- 「許可を追加」画面では「AmazonS3FullAccess」ポリシーのみを選択した状態で、[次へ]をクリックします。
- 「名前、確認、および作成」画面では、ロール名に「pulumi-esc-oidc-role」を入力して[ロールを作成]をクリックします。
- ロールの作成が完了したら、ロールの詳細画面に移り、ロールのARNを控えておきます。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- Pulumi Kubernetes Operatorを活用してPulumiのCI/CDを実現しよう
- PulumiでAWSリソースをデプロイしよう
- SecretもPulumiで使いこなしたい! PulumiのSecurityを試してみよう
- NGINX Ingress Controllerの柔軟なアプリケーション制御、具体的なユースケースと設定方法を理解する
- クラウドネイティブな環境でKeycloakによるシングルサインオンを実現
- Policy as Codeでインフラのコンプライアンスを自動実現! 「Pulumi CrossGuard」を活用してみよう
- Oracle Cloud Hangout Cafe Season4 #4「マイクロサービスの認証・認可とJWT」(2021年7月7日開催)
- マシン・イメージを自動構築し、作業効率を高めるPacker入門
- 3scaleの基本的な使い方
- 3scaleをインストールしてみよう!