1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Alibaba CloudAdvent Calendar 2018

Day 5

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

Last updated at Posted at 2018-12-04

はじめに

本投稿は SBCloud Engineers' Blog にも投稿しています。SBCloud Engineers' Blogには日中間接続をはじめ、Alibaba Cloud関連のソリューションや技術ネタを記載していますので、よかったら是非一度アクセスみてください。

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

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

アーキテクチャ

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

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

デモ動画

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

デモ動画https://youtu.be/YlIA3-yebdM

デモ動画の流れは以下になります。

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サービスです。無料プランもあって、非常に助かっています。

DroneやWerckerも検討していましたが、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上のリソースを操作する必要があるので、下記のように、対象のプロジェクトに環境変数を設定します。 ${環境変数} で呼び出せます。
alt

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を実行します。
alt
alt

最後

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

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

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?