CloudStackをAPIで操作する:CloudStackによるプライベートクラウド構築術(5)(2/2 ページ)
CloudStackは、オープンソースベースのIaaSクラウド構築・運用ソフトウェア。使いやすく、機能が充実していることなどから、大規模なデータセンター事業者や組織での導入が相次いでいる。本連載では、このソフトウェアをプライベートクラウド構築に活用する方法を紹介する
APIキーの取得方法
APIを使用するにあたって、まずAPI鍵を生成する必要があります。今回は管理者権限のあるユーザー用のAPI鍵を生成します。
管理者権限でCloudStack管理サーバにログインし「アカウント」メニューを開き、「新規ユーザ」メニューを実行します。
作成したユーザーの右端の「アクション」のメニューを選択すると、プルダウンメニューが現れます。「キー生成」メニューを選択します。
API鍵が作成されたのが画面で確認できます。これで準備は終わりです。
APIプログラムの利用方法と実行結果
前述のCloudStack APIプログラムは以下になります。
#!/bin/bash
#
# kick_api.sh
#
# please set your host
address="http://[your management server]:8080"
# please set your api key
api_key="QVOObVBiTodKl5L0vPQFCCELsxbtEHHysXU42XTFFwhBHWWFV7GaiH5oJG0yHHsqFzCcgflH8Ee8Ttk4m_qJLQ"
# please set your secret key
secret_key="zTl4qQtSZPijMkNYgkX1lQh6QlEUXyjSKeXSPZQl2MJifzOBFhNDA5cQlfK7Ds5BFEM_ua_5ELMPL-z4JNJBIA"
api_path="/client/api?"
if [ $# -lt 1 ]; then
echo "usage: $0 command=... paramter=... parameter=..."; exit;
elif [[ $1 != "command="* ]]; then
echo "usage: $0 command=... paramter=... parameter=..."; exit;
elif [ $1 == "command=" ]; then
echo "usage: $0 command=... paramter=... parameter=..."; exit;
fi
data_array=("$@" "apikey=${api_key}")
temp1=$(echo -n ${data_array[@]} | \
tr " " "\n" | \ sort -fd -t'=' | \
perl -pe's/([^-_.~A-Za-z0-9=\s])/sprintf("%%%02X", ord($1))/seg'| \
tr "A-Z" "a-z" | \ tr "\n" "&" )
signature=$(echo -n ${temp1[@]})
signature=${signature%&}
signature=$(echo -n $signature | \
openssl sha1 -binary -hmac $secret_key | \
openssl base64 )
signature=$(echo -n $signature | \
perl -pe's/([^-_.~A-Za-z0-9])/sprintf("%%%02X", ord($1))/seg')
url=${address}${api_path}$(echo -n $@ | tr " " "&")"&"apikey=$api_key"&"signature=$signature
echo " SEND URL: $url"
curl ${url} | xmllint --format -
このスクリプトの使用方法について説明します。
まずは、スクリプト内のパラメータを変更します。
api_keyおよびsecret_keyパラメータには、先ほど生成されたキーをコピーします。addressパラメータにはアクセスするManagementサーバのホスト名を記入します。
パラメータの変更が終わったらCloudStack APIを実行します。例えば、パラメータ指定なしのlistAccountsコマンドを実行したいときは以下のようにします。
#kick_api.sh command=listAccounts
パラメータを指定したstartVirtualMachineコマンドを実行したいときは以下のようにします。パラメータやレスポンスタグをスペースで区切ってください。
#kick_api.sh command=startVirtualMachineid=8
非同期コマンド
スナップショットやディスクボリュームの作成など、処理に時間がかかる一部のAPIは非同期コマンドに指定されています。
これらの非同期コマンドは実施されると即座にジョブIDを返します。これはAPIがすぐに処理を返す必要があるためであり、実際にはジョブはバックグラウンドで実行され続けます。
実行されたジョブのステータスは、queryAsyncJobResultコマンドにジョブIDを指定することにより、確認することができます。
ジョブIDが0の場合:ジョブは実行中。定期的にチェックを続けます。
ジョブIDが1の場合:ジョブが正常に完了。コマンドに関連付いた全ての応答値が返されます。
ジョブIDが2の場合:ジョブの完了に失敗。失敗の理由は<jobresultcode>タグと<jobresult>タグを参照します。
非同期コマンドはAPIリファレンスに(A)と表示されています。
以上がCloudStack APIの仕様と利用方法です。次回はCloudStack 3.0の新機能について説明します。
- CloudStackベースのサービスを活用したハイブリッド構成を検討する
- Apache CloudStackの開発プロセスを知ろう
- Apache CloudStack開発用クラウド環境の構築
- 技術を深めるには開発が一番? Apache CloudStack開発のいまを知ろう
- ChefのKnifeでCloudStackを操作する方法
- CloudStackとネットワーク機器の連携
- CloudStack 3.0の新機能
- CloudStackをAPIで操作する
- CloudStackを使いこなすための設定
- CloudStackのインストールからサーバ起動まで
- CloudStack 採用、IDCフロンティアの「NOAH」を試す
- CloudStackを構成するコンポーネントを探る
- クラウド構築で注目が集まるCloudStackとは?
Copyright © ITmedia, Inc. All Rights Reserved.


