CloudStack APIをたたくPowerShell ーCSPowerShellー

クラウド業界では最近、クラウド管理ツールに注目が集まっています。特に、CloudStackは採用事例が国内でも出てきております。私も業務や個人的にもCloudStackに触れる機会が増えております。
その中で、APIを直接たたく必要があったり、直接たたく方が便利な時が多くありましたので、CloudStackのAPIをたたくPowerShellスクリプトを書きました。

現在、Githubにて「CSPowershell」という名前でスクリプトと簡単な説明を公開していますので、ご紹介いたします。

1. 前提条件

URLへの署名の際に.NET. Frameworkのライブラリを直接ロードしていますので、.NET Framework 3.5以上をインストールしてください。動作確認は、Windows Server 2008 R2にて行っています。
また、スクリプトの実行にはPowerShellの実行ポリシーの変更が必要ですので、初めてスクリプトを実行する端末では、下記のコマンドを実行し、質問にYesと答える必要があります。

> Set-ExecutionPolicy RemoteSigned

2. CloudStack APIキーなどの設定

  1. まず、管理者アカウント(admin)でCloudStackの管理画面にログインし、アカウント>すべてのアカウント>利用するユーザーアカウントの順にクリックして詳細情報を表示します。
  2. 次に、「ユーザ」タブをクリックし、「Action」の中から「キー生成」をクリックして、APIkeyとSecret Keyを生成します。
  3. 成した二つのkeyとアクセス先URLをスクリプト冒頭の方にある変数に記載します。文字列変数として定義するため、ダブルクォーテーションで囲みます。
  4. あとは、実行したいAPIと変数を引数に入れて実行すればOKです。たとえば、自分のアカウントで作成したVMの一覧を取得するAPI “listVirtualMachines”を実行する場合のコマンドは下記の通りです。

3. 実行結果・使えるAPIコマンドについて

私の作成したCSPowershellスクリプトでは、CloudStackからの応答をXML Documentオブジェクトとして返します。結果に応じた後処理などは、PowerShellでのXMLの扱い方をそのまま適用可能です。LINQ to XMLなりXMLReaderなりを使うことができます。

また、利用可能なCloudStack APIについては、CloudStack APIリファレンス内のUser APIをご覧ください。