クラウド業界では最近、クラウド管理ツールに注目が集まっています。特に、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キーなどの設定
- まず、管理者アカウント(admin)でCloudStackの管理画面にログインし、アカウント>すべてのアカウント>利用するユーザーアカウントの順にクリックして詳細情報を表示します。
- 次に、「ユーザ」タブをクリックし、「Action」の中から「キー生成」をクリックして、APIkeyとSecret Keyを生成します。
- 成した二つのkeyとアクセス先URLをスクリプト冒頭の方にある変数に記載します。文字列変数として定義するため、ダブルクォーテーションで囲みます。
- あとは、実行したいAPIと変数を引数に入れて実行すればOKです。たとえば、自分のアカウントで作成したVMの一覧を取得するAPI “listVirtualMachines”を実行する場合のコマンドは下記の通りです。
3. 実行結果・使えるAPIコマンドについて
私の作成したCSPowershellスクリプトでは、CloudStackからの応答をXML Documentオブジェクトとして返します。結果に応じた後処理などは、PowerShellでのXMLの扱い方をそのまま適用可能です。LINQ to XMLなりXMLReaderなりを使うことができます。
また、利用可能なCloudStack APIについては、CloudStack APIリファレンス内のUser APIをご覧ください。