【Pulumi】Pulumi ~ 基本編 / CLI ~

■ はじめに

https://dk521123.hatenablog.com/entry/2021/10/23/025230
https://dk521123.hatenablog.com/entry/2022/01/10/155206

の続き。

上記の記事で、環境設定で「pulumi version」や
Hello World で「pulumi new」などで扱っていたが、
Pulumi には、CLI (Command Line Interface) が備わっているので
今回は、主なCLIについて、扱っていく。

目次

【0】Pulumi CLI
【1】pulumi version
【2】pulumi login / pulumi logout
【3】pulumi new
【4】pulumi preview / pulumi up
 1)pulumi preview
 2)pulumi up
 補足:対象リソースのみデプロイ(--target)
【5】pulumi destroy
 補足:対象リソースのみ削除(--target)
【6】pulumi stack
 1)pulumi stack ls
 2)pulumi stack rm
 3)pulumi stack select
 4)pulumi stack change-secrets-provider
 5)pulumi stack delete
【7】pulumi config
 0)pulumi config
 1)pulumi config set
 2)pulumi config get
 3)pulumi config rm
【8】pulumi refresh / pulumi up --refresh

【0】Pulumi CLI

* CLI 一覧は、以下の公式サイトを参照のこと

公式サイト:CLI一覧
https://www.pulumi.com/docs/reference/cli/

# CLI 説明
1 pulumi version version表示
2 pulumi login ログイン
3 pulumi logout ログアウト
4 pulumi new プロジェクト生成
5 pulumi up スタック内のリソースの作成・更新
6 pulumi preview pulumi up の dry run版
7 pulumi destroy 存在するスタックとそのリソース削除
8 pulumi stack スタックの管理
9 pulumi config 設定値の管理

【1】pulumi version

* pulumi の version を表示

https://www.pulumi.com/docs/reference/cli/pulumi_version/

【2】pulumi login / pulumi logout

* Pulumi サーバへのログイン・ログアウト

https://www.pulumi.com/docs/reference/cli/pulumi_login/
https://www.pulumi.com/docs/reference/cli/pulumi_logout/
コマンド例

# ローカル環境のPulumiにログイン(c:/Users/<User>/.pulumi内で管理)
pulumi login --local

# Windows環境の特定の場所を指定
pulumi login file://c:/tmp/

# AWS S3 を指定
pulumi login s3://your-s3-bucket/pulumi/your-state

【3】pulumi new

* テンプレートを使ったプロジェクトの生成
 => 「<Home>\.pulumi\templates」配下にテンプレートがあるので
  これを使って、生成しているものと思われる

https://www.pulumi.com/docs/reference/cli/pulumi_new/

構文

pulumi new [template|url] [flags]

# template : aws-typescript or azure-python
# url : e.g. https://github.com/<user>/<repo>
# flags : Option (以下のサイトを参照)

https://www.pulumi.com/docs/reference/cli/pulumi_new/#options
サンプル

pulumi new aws-typescript \
 --name ="your-project-name" \
 --description="This is a sample" \
 --stack="dev" \
 --secrets-provider="awskms://alias/ExampleAlias?region=us-east-1"

【4】pulumi preview / pulumi up

* デプロイ実行するためのコマンド

1)pulumi preview

* pulumi up の dry run版

https://www.pulumi.com/docs/reference/cli/pulumi_preview/

--diff : 詳しい差分を知りたい場合

* 「pulumi preview --diff」で、詳しい差分を表示してくれる
* 新規作成リソースのURN(ARN)を調べるのにも使える

https://dk521123.hatenablog.com/entry/2022/08/04/124321

2)pulumi up

* スタック内のリソースの作成・更新

https://www.pulumi.com/docs/reference/cli/pulumi_up/

補足:対象リソースのみデプロイ(--target)

* 以下の関連記事を参照のこと

https://dk521123.hatenablog.com/entry/2022/06/28/000000
https://dk521123.hatenablog.com/entry/2022/08/04/124321

【5】pulumi destroy

* 存在するスタックとそのリソース削除

https://www.pulumi.com/docs/reference/cli/pulumi_destroy/

補足:対象リソースのみ削除(--target)

* 以下の関連記事を参照のこと

https://dk521123.hatenablog.com/entry/2022/06/28/000000
https://dk521123.hatenablog.com/entry/2022/08/04/124321

【6】pulumi stack

* スタックの管理

https://www.pulumi.com/docs/reference/cli/pulumi_stack/

1)pulumi stack ls

* スタック一覧表示

https://www.pulumi.com/docs/reference/cli/pulumi_stack_ls/

2)pulumi stack rm

* スタックとそのリソースの削除

https://www.pulumi.com/docs/reference/cli/pulumi_stack_rm/
エラー「stack 'dev' already exists」について

* Stack が既にある場合、「pulumi stack rm」で削除して対処
 => 詳細は、以下の関連記事を参照のこと

https://dk521123.hatenablog.com/entry/2022/01/11/105319

3)pulumi stack select

* 対象Stackを選択する

https://www.pulumi.com/docs/reference/cli/pulumi_stack_select/

サンプル

# スタック「dev」を選択
pulumi stack select dev

# 選択されていることを確認するために「pulumi stack ls」で確認
pulumi stack ls

NAME
dev* <= 選択されているスタックには「*」が付く
prod

# スタック「prod」を選択
pulumi stack select prod

# 選択されていることを確認するために「pulumi stack ls」で確認
pulumi stack ls

NAME
dev
prod*

4)pulumi stack change-secrets-provider

* 以下の関連記事を参照のこと。

Pulumi ~ パスフレーズ省略を考える ~
https://dk521123.hatenablog.com/entry/2022/03/14/152258

5)pulumi stack delete

* 以下の関連記事を参照のこと。

pulumi up --target をした際にエラー「snapshot integrity failure」が発生
https://dk521123.hatenablog.com/entry/2022/09/27/165923

【7】pulumi config

* 設定値の管理
* Pulumi の Configに関する詳細は、以下の関連記事を参照のこと。

Pulumi ~ 基本編 / Config ~
https://dk521123.hatenablog.com/entry/2022/03/15/224217

0)pulumi config

* 設定値の全取得

サンプル

# --json:JSON形式で取得
pulumi config --json

1)pulumi config set

* 設定値の設定

https://www.pulumi.com/docs/reference/cli/pulumi_config_set/
サンプル

# pulumi config set <key> [value]
pulumi config set key_value HelloWorld

# pulumi config set aws:region [aws-region]
pulumi config set aws:region us-east-2

2)pulumi config get

* 設定値の取得

https://www.pulumi.com/docs/reference/cli/pulumi_config_get/

サンプル

# pulumi config get <key>
pulumi config get key_value

3)pulumi config rm

* 設定値の削除

https://www.pulumi.com/docs/reference/cli/pulumi_config_rm/

サンプル

# pulumi config rm <key>
pulumi config rm key_value

【8】pulumi refresh / pulumi up --refresh

* Pulumi の Stateと実リソースの同期を行う

https://tech.guitarrapc.com/entry/2019/12/23/000000

* 以下の関連記事で実際に使用した

pulumi up --target をした際にエラー「snapshot integrity failure」が発生
https://dk521123.hatenablog.com/entry/2022/09/27/165923

参考文献

https://dev.classmethod.jp/articles/pulumi-tips/

関連記事

Pulumi ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2021/10/23/025230
Pulumi ~ 環境設定編 ~
https://dk521123.hatenablog.com/entry/2022/01/10/155206
Pulumi ~ 基本編 / Config ~
https://dk521123.hatenablog.com/entry/2022/03/15/224217
Pulumi ~ 基本編 / Logging ~
https://dk521123.hatenablog.com/entry/2022/03/04/111618
Pulumi ~ パスフレーズ省略を考える ~
https://dk521123.hatenablog.com/entry/2022/03/14/152258
pulumiで対象リソースのみデプロイ / 削除(--target)
https://dk521123.hatenablog.com/entry/2022/06/28/000000
pulumiで 新規作成リソースのみデプロイ
https://dk521123.hatenablog.com/entry/2022/08/04/124321
Pulumi に関するトラブル
https://dk521123.hatenablog.com/entry/2022/01/11/105319
pulumi up --target をした際にエラー「snapshot integrity failure」が発生
https://dk521123.hatenablog.com/entry/2022/09/27/165923