【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
【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版

2)pulumi up

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

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

* URN(ARN)を指定してデプロイ
* From Pulumi CLI 1.3.0

https://tech.guitarrapc.com/entry/2019/12/21/000000
https://qiita.com/ttkn9a/items/6fb71af2d265939184c3

コマンド例

# Step1: Stack を選択
# (どんなStackが選択できるかを調べるには「pulumi stack ls」を実行)
pulumi stack select nonprod

# Step2: URN(ARN) を調べる
pulumi stack --show-urns

Current stack is dev:
    Managed by LAPTOP-RXXXQSF6
    Last updated: 12 minutes ago (2022-03-22 23:04:57.8516092 +0900 JST)
    Pulumi version: v3.26.1
Current stack resources (5):
    TYPE                                 NAME
    pulumi:pulumi:Stack                  quickstart-dev
    │  URN: urn:pulumi:dev::quickstart::pulumi:pulumi:Stack::quickstart-dev
    ├─ demo:DemoComponent                hello-world
    │  │  URN: urn:pulumi:dev::quickstart::demo:DemoComponent::hello-world
    │  ├─ kubernetes:apps/v1:Deployment  nginx
    │  │     URN: urn:pulumi:dev::quickstart::demo:DemoComponent$kubernetes:apps/v1:Deployment::nginx
    │  └─ kubernetes:core/v1:Service     nginx
    │        URN: urn:pulumi:dev::quickstart::demo:DemoComponent$kubernetes:core/v1:Service::nginx
    └─ pulumi:providers:kubernetes       default_3_17_0
          URN: urn:pulumi:dev::quickstart::pulumi:providers:kubernetes::default_3_17_0

Current stack outputs (1):
    OUTPUT  VALUE
    ip      10.106.169.203

# Step3: --target <URN>を指定して実行
# 構文:pulumi up --target <URN>
pulumi up --target urn:pulumi:dev::quickstart::demo:DemoComponent::hello-world

【5】pulumi destroy

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

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

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

* pulumi up の 「補足:対象リソースのみデプロイ(--target)」
 の逆バージョン
pulumi destroy --target xxxxxx

【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

【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

参考文献

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 に関するトラブル
https://dk521123.hatenablog.com/entry/2022/01/11/105319