■ はじめ
小ネタ。 よく使うし、今後も使いそうなので、メモ。
目次
【1】対象リソースのみデプロイ 【2】対象リソースのみ削除 【3】複数指定したい場合 【4】使用上の注意 1)URNを引用符「'」で囲った方がいい 2)親子関係があるリソースは親リソースを先に作る
【1】対象リソースのみデプロイ
* 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
* URN(ARN) を調べるのは、「pulumi stack --show-urns」 => 以下のAPI仕様書を参照のこと
https://www.pulumi.com/docs/reference/cli/pulumi_stack/
★2022/08/04追記
* 新規作成AWSリソースでは、 「pulumi stack --show-urns」では、URIが表示されないので 「pulumi preview --diff」を使う必要がある => だったら、「pulumi stack --show-urns」いらないじゃんってなるが 「pulumi preview --diff」だと情報量が多くて見づらいので 基本は、「pulumi stack --show-urns」を使ったほうがよさそう。 => 詳細は、以下の関連記事を参照のこと。
https://dk521123.hatenablog.com/entry/2022/08/04/124321
コマンド例
Step1: Stack を選択
# どんなStackが選択できるかを調べるには「pulumi stack ls」を実行)
pulumi stack select nonprod
Step2: URN(ARN) を調べる
pulumi stack --show-urns # 絞り込みたい場合は、パイプ(|) & grep を利用する # pulumi stack --show-urns | grep "<キーワード>" 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
# 構文:pulumi up --target '<URN>' pulumi up --target 'urn:pulumi:dev::quickstart::demo:DemoComponent::hello-world' # 不安な場合は、pulumi preview --target '<URN>' で実行
【2】対象リソースのみ削除
* pulumi up の 「補足:対象リソースのみデプロイ(--target)」 の逆バージョンで pulumi destroy --targetを実行する
コマンド例
# xxxxxx は対象のURN pulumi destroy --target 'xxxxxx'
【3】複数指定したい場合
# --target 'xxx' --target 'yyyy' ... で連結させればいい pulumi up \ --target 'urn:pulumi:dev::quickstart::demo:DemoComp::hello-world1' \ --target 'urn:pulumi:dev::quickstart::demo:DemoComp::hello-world2' \ --target 'urn:pulumi:dev::quickstart::demo:DemoComp::hello-world3'
【4】使用上の注意
1)URNを引用符「'」で囲った方がいい
# URNに「$」など記号が入っている $ pulumi up --target urn:xxxxx...$aws:xxx
エラー内容
error: Target 'urn:xxxxx...$aws:xxx' could not be found in the stack. Did you forget to escape $ in your shell
対応案
# <URN>を引用符「'」で囲った $ pulumi up --target 'urn:xxxxx...$aws:xxx'
別案
# \でエスケープする(「\$」部分) $ pulumi up --target 'urn:xxxxx...\$aws:xxx'
2)親子関係があるリソースは親リソースを先に作る
* 親子関係があるリソースは親リソースを先に作る必要があるので ちゃんとリソースの作りを知っておかないといけない。 => 以下の関連記事のようなことが発生するかも、、、
pulumi up --target をした際にエラー「snapshot integrity failure」が発生
https://dk521123.hatenablog.com/entry/2022/09/27/165923
関連記事
Pulumi ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2021/10/23/025230
Pulumi ~ 基本編 / CLI ~
https://dk521123.hatenablog.com/entry/2021/10/25/215508
pulumiで 新規作成リソースのみデプロイ
https://dk521123.hatenablog.com/entry/2022/08/04/124321
pulumi up --target をした際にエラー「snapshot integrity failure」が発生
https://dk521123.hatenablog.com/entry/2022/09/27/165923