CircleCI、Postmanを使って、Alibaba Cloud上のリソース一括削除

皆さん、こんにちは。ソリューションアーキテクトのQ(@joe_qiubinbin)です。

私が所属している部署では、Alibaba Cloud利用を検討されているお客様にトレーニングを実施しております。

トレーニング終了後、利用されていたリソースの削除は基本的に講師側が手動で削除していました。リソースの間に依存関係もあり、リソース削除の時に削除順番を気をつけないといけないですし、何よりトレーニング受講者の数が多いほど、リソース削除作業の負担が大きくなります。実は自分も手動で対応したことがありますが、一個ずつアカウントにログインして、削除順番を確認しながらリソースを削除するなんて苦痛で仕方がありません。ですので、簡単にリソースを一括削除できるようにしました。

アーキテクチャ

何をしたかと言いますと、PostmanとCircleCIを利用して、APIコール一発でトレーニングで利用されていたリソースを全部削除できる仕組みを作って、運用開始しました。

アーキテクチャの全体像は以下になりますが、赤線の部分が今回紹介する対象です。

デモ動画

全体の動きについては、下記約3分のデモ動画をご確認ください。
※デモのため、作成したAlibaba Cloudリソースは一部のみになります。
デモ動画の流れ

1: 利用されているリソースを確認する(デモ動画ですと、ECS、SLB、RDS、OSS)
2: PostmanでCircleCIのAPIを呼び出す
3: CircleCIは指定されているGitHubリポジトリーからコードを取得し、(リソース削除)のジョブを実行する
4: リソースを全部されたかどうかを確認する

利用するサービスと諸設定

上記のアーキテクチャには、GitHub, Aliyun CLI, RAM(Alibaba Cloud), CircleCI, Postmanを利用しています。諸サービスの詳細設定は割愛させていただきますが、簡単にどういった作業があるかを説明させていただきます。

GitHub

GitHubの説明は割愛させていただきます。今回利用するシェルスクリプトをSB Cloudの aliyun_resource_management というリポジトリーに格納しました。

このあとで紹介するCircleCIは指定されたGitHub上にあるコードを取得して、実行します。

Aliyun CLI

Aliyun Command Line Interface (Aliyun CLI)はAlibaba Cloud上のリソースを操作する管理ツール(Goベース)で、GitHubの aliyun-cli に公開されています。

pythonベースのAliyun CLIもありますが、開発が止まっており、利用を推奨しません。

今回はAliyun CLIを使ってリソース一括削除のシェルを作成しました。

RAM

Training AccountにはManagement Accountから呼び出せるUserRoleを作成します。Management AccountにはTraining AccountのUserRoleに対してAssumeRoleできるRAM UserおよびそのユーザーのAccessKeyを作成します。

AssumeRoleについては以前投稿した ユーザーロールでの一時的な認証アクセスについて  にてご確認いただければと思います。簡単に言いますと、アカウントへの一時的な認証アクセスです。

作成したRAM UserにはAssumeRoleの権限を付与することが必要です。

CircleCI

流行りのCIサービスです。無料プランもあって、非常に助かっています。

DroneWerckerも検討していましたが、RoleのARNやRegionの情報などを渡したいので、今回はパラメーターを自由に渡せるCircleCIを利用することにしました。

CircleCIには下記3つの作業が必要です。

1: Personal API Tokensの発行
PostmanからCircleCIのAPIを呼び出すためにはトークンを用いた認証が必要なので、CIrcleCIのUser settingsのPersonal API Tokensページにてトークンを発行します。

2: プロジェクトの追加
対象のGitHubのリポジトリーを指定して、ビルドのプロジェクトを追加します。CircleCIは指定されたリポジトリーからコードを取得して、ジョブを実行します。

3: 環境変数として、Alibaba CloudのAccessKey等の設定
CircleCIのジョブでAccessKeyを利用して、Alibaba Cloud上のリソースを操作する必要があるので、下記のように、対象のプロジェクトに環境変数を設定します。 ${環境変数} で呼び出せます。

Postman

API開発やテストに非常に便利なツールです。今回はCircleCIのAPIを呼び出すに利用します。

CircleCIの公式ページ「Using the API to Trigger Jobs」を参考して、下記のようにHeadersにはContent-Typeとcircle-tokenを、Bodyにはbuild_parametersとしてリージョンの情報、実行するシェルの名前、AsumeRoleのARNを設定し、https://circleci.com/api/v1.1/project/<vcs-type>/<org>/<repo>/tree/<branch>に対してPOSTを実行します。

最後

CircleCIとPostmanを利用することで、ローカル環境からAPIコール一発でAlibaba Cloud上のリソースを削除できるようにできました。最終的にはリソース削除の作業とかも全部自動化したいと思っていますので、それを実現できましたら、また皆さんと共有させていただきます。

また、今回はCIサービスを利用して、Alibaba Cloud上のリソースを削除することにしましたが、CI/CDとかもできますので、ご興味ある方は Alibaba CloudとWerckerでCI/CDパイプラインを作ってみた をご確認ください。

この記事をシェアする