クリーンアップ作業

今回のハンズオンで構築した環境のクリーンアップ手順となります。複数のStackをデプロイしているため、リソースの削除もStackを切り替えて行います。

  1. dev用StackでVPCを作成しているため、VPCを利用しているprod用StackのリソースからでないとVPCを削除できないため、先にprod用Stackのリソースから削除します。prod用Stackに切り替えます。
    $ pulumi stack select prod
    
    $ pulumi stack ls        
    NAME  LAST UPDATE    RESOURCE COUNT  URL
    dev  6 minutes ago  6               https://app.pulumi.com/***/pulumi-stack/dev
    prod*  4 minutes ago  8               https://app.pulumi.com/***/pulumi-stack/prod
  2. Pulumiで作成したリソースを削除する際は「pulumi destroy」コマンドを実行します。「pulumi up」と同じく「details」の選択で削除するリソースの詳細が確認できます。問題がなければ「yes」を選択します。
    $ pulumi destroy
    Previewing destroy (prod)
    
    View Live: https://app.pulumi.com/***/pulumi-stack/prod/previews/6cde348b-595c-4756-9de6-***
    
         Type                 Name               Plan       
     -   pulumi:pulumi:Stack  pulumi-stack-prod  delete     
     -   ├─ aws:ec2:Instance  prod-my-instance   delete     
     -   └─ aws:ec2:Subnet    prod-my-subnet     delete     
    
    
    Resources:
        - 3 to delete
    
    Do you want to perform this destroy? details
    - aws:ec2/instance:Instance: (delete)
        [id=i-0b700d8c150e5e938]
        [urn=urn:pulumi:prod::pulumi-stack::aws:ec2/instance:Instance::prod-my-instance]
        [provider=urn:pulumi:prod::pulumi-stack::pulumi:providers:aws::default_5_32_0::05b1fe6f-4ea7-4af8-b47d-***]
    - aws:ec2/subnet:Subnet: (delete)
        [id=subnet-0cf5b7c6fd6cdfc9f]
        [urn=urn:pulumi:prod::pulumi-stack::aws:ec2/subnet:Subnet::prod-my-subnet]
        [provider=urn:pulumi:prod::pulumi-stack::pulumi:providers:aws::default_5_32_0::05b1fe6f-4ea7-4af8-b47d-***]
    < aws:ec2/vpc:Vpc: (discard)
        [id=vpc-000f8f3d29d5dc0db]
        [urn=urn:pulumi:prod::pulumi-stack::aws:ec2/vpc:Vpc::my-vpc]
        [provider=urn:pulumi:prod::pulumi-stack::pulumi:providers:aws::default_5_32_0::05b1fe6f-4ea7-4af8-b47d-***]
    < pulumi:pulumi:StackReference: (discard)
        [id=***/pulumi-stack/dev]
        [urn=urn:pulumi:prod::pulumi-stack::pulumi:pulumi:StackReference::***/pulumi-stack/dev]
    - pulumi:pulumi:Stack: (delete)
        [urn=urn:pulumi:prod::pulumi-stack::pulumi:pulumi:Stack::pulumi-stack-prod]
    
    Do you want to perform this destroy? yes
    Destroying (prod)
    
    View Live: https://app.pulumi.com/***/pulumi-stack/prod/updates/10
    
         Type                 Name               Status              
     -   pulumi:pulumi:Stack  pulumi-stack-prod  deleted             
     -   ├─ aws:ec2:Instance  prod-my-instance   deleted (141s)      
     -   └─ aws:ec2:Subnet    prod-my-subnet     deleted (0.79s)     
    
    
    Resources:
        - 3 deleted
    
    Duration: 2m26s
  3. 次に、dev用Stackのリソースも削除します。dev用Stackに切り替えます。
    $ pulumi stack select dev
    
    $ pulumi stack ls        
    NAME  LAST UPDATE    RESOURCE COUNT  URL
    dev*  6 minutes ago  6               https://app.pulumi.com/***/pulumi-stack/dev
    prod  3 minutes ago  0               https://app.pulumi.com/***/pulumi-stack/prod
  4. 同様に「pulumi destroy」コマンドを実行します。
    $ pulumi destroy         
    Previewing destroy (dev)
    
    View Live: https://app.pulumi.com/***/pulumi-stack/dev/previews/b9a22195-cc68-4639-a4ac-***
    
         Type                 Name              Plan       
     -   pulumi:pulumi:Stack  pulumi-stack-dev  delete     
     -   ├─ aws:ec2:Instance  dev-my-instance   delete     
     -   ├─ aws:ec2:Subnet    dev-my-subnet     delete     
     -   └─ aws:ec2:Vpc       my-vpc            delete     
    
    
    Outputs:
      - vpc_id: "vpc-000f8f3d29d5dc0db"
    
    Resources:
        - 4 to delete
    
    Do you want to perform this destroy? details
    - aws:ec2/instance:Instance: (delete)
        [id=i-038301e0f4d846fc0]
        [urn=urn:pulumi:dev::pulumi-stack::aws:ec2/instance:Instance::dev-my-instance]
        [provider=urn:pulumi:dev::pulumi-stack::pulumi:providers:aws::default_5_32_0::3ff48aaf-c093-4fec-b80a-***]
    - aws:ec2/subnet:Subnet: (delete)
        [id=subnet-0aaf0264734052dd9]
        [urn=urn:pulumi:dev::pulumi-stack::aws:ec2/subnet:Subnet::dev-my-subnet]
        [provider=urn:pulumi:dev::pulumi-stack::pulumi:providers:aws::default_5_32_0::3ff48aaf-c093-4fec-b80a-***]
    - aws:ec2/vpc:Vpc: (delete)
        [id=vpc-000f8f3d29d5dc0db]
        [urn=urn:pulumi:dev::pulumi-stack::aws:ec2/vpc:Vpc::my-vpc]
        [provider=urn:pulumi:dev::pulumi-stack::pulumi:providers:aws::default_5_32_0::3ff48aaf-c093-4fec-b80a-***]
    - pulumi:pulumi:Stack: (delete)
        [urn=urn:pulumi:dev::pulumi-stack::pulumi:pulumi:Stack::pulumi-stack-dev]
        --outputs:--
      - vpc_id: "vpc-000f8f3d29d5dc0db"
    
    Do you want to perform this destroy? yes
    Destroying (dev)
    
    View Live: https://app.pulumi.com/***/pulumi-stack/dev/updates/13
    
         Type                 Name              Status              
     -   pulumi:pulumi:Stack  pulumi-stack-dev  deleted             
     -   ├─ aws:ec2:Instance  dev-my-instance   deleted (30s)       
     -   ├─ aws:ec2:Subnet    dev-my-subnet     deleted (0.76s)     
     -   └─ aws:ec2:Vpc       my-vpc            deleted (1s)        
    
    
    Outputs:
      - vpc_id: "vpc-000f8f3d29d5dc0db"
    
    Resources:
        - 4 deleted
    
    Duration: 36s
    devおよびprodのStackリソース削除完了後、AWSマネジメントコンソールでも両Stackのリソースが削除されていることが確認できます。
  5. Stackリソースの削除が完了したことで、AWSに作成した全てのリソースも削除されましたが、Pulumiのリソースとしてまだ残っているStack自体も削除できます。Stack自体を削除すると「pulumi config」などで設定したStack自体の設定やStackのリソース変更履歴、Stackの設定ファイル「Pulumi.<stack名>.yaml」なども削除されるため注意してください。Stack削除コマンド「pulumi stack rm」実行後は、確認としてStack名の入力が求められるので、削除対象のStack名を入力します。
    $ pulumi stack select dev
    
    $ pulumi stack ls
    NAME  LAST UPDATE     RESOURCE COUNT  URL
    dev*  11 minutes ago  0               https://app.pulumi.com/***/pulumi-stack/dev
    prod  6 minutes ago   0               https://app.pulumi.com/***/pulumi-stack/prod
    
    $ pulumi stack rm
    This will permanently remove the 'dev' stack!
    Please confirm that this is what you'd like to do by typing `dev`: dev
    Stack 'dev' has been removed!
    
    $ pulumi stack select prod
    
    $ pulumi stack ls         
    NAME   LAST UPDATE    RESOURCE COUNT  URL
    prod*  6 minutes ago  0               https://app.pulumi.com/***/pulumi-stack/prod
    
    $ pulumi stack rm         
    This will permanently remove the 'prod' stack!
    Please confirm that this is what you'd like to do by typing `prod`: prod
    Stack 'prod' has been removed!
    
    $ pulumi stack ls
    NAME  LAST UPDATE  RESOURCE COUNT  URL

おわりに

今回は、Pulumi Stackの概要について解説し、複数Stackのデプロイについてハンズオンを実施しました。簡単なハンズオンではありますが、1つのProgramで複数のStackに対応したリソースを作成でき、また、Stack間で特定の値だけ差分を出す方法について、少しイメージできたのではないでしょうか。

Stackをうまく使いこなすことでインフラ環境の再現が容易になり、また、環境(dev/prodなど)の分離やアプリケーションの分離も明確になり、オペレーションミスなどの事故も未然に防げるようになります。ぜひ、この機会にPulumi Stackについて理解を深めていただければと思います。

次回以降も、引き続きPulumiの便利な機能について紹介していきますので、お楽しみに!

【参考】Pulumi公式ホームページ(英語)

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30