こんにちは、鯨井貴博@opensourcetechです。
本日は、CloudStackにおけるAPIを使ってみました。
少し複雑なので忘れないように記録に残しておこうと思います。
なお、CloudStack環境については、
devcloud2にて4.3.0で予め構築済みであるものとします。
まずは、ログイン。
デフォルトアカウントのadmin/passwordでログインします。


ログイン後は、
メニューのアカウント > adminと辿ります。

そして、右側にある「表示-ユーザー(view users)」をクリックします。

その後、またadminというユーザーが表示されるのでクリックします。

adminの詳細にて、キーの作成というアイコンをクリックすると、

確認画面が表示されるので、「はい」とします。

これで、APIの使用に必要なAPIキーと秘密キーが生成されました。

続いて必要なソフトウェアの準備を行います。
devcloud2はdebian(ubuntu)で構築されているので、
apt-get update

apt-get install python-pip

pip install cloudmonkey

CLIより、clundmonkeyコマンドを実行すると、
専用のプロンプトに切り替わります。

プロンプトから、
CloudStackの環境に関する情報を設定していきます。
set host 192.168.56.10
※必要に応じて、set port 8080
set apikey K-cl8myjg1MFy4OePMJO2HMZrjwuF4Yp7RxOUPAOoJoHB7YuP5C6lpQJZ-4ig17NKsm2SWTN0Dps0hChR-N0Ng
set secretkey whNU99u4x5rIW3fYjgZ6OUPcSpUO0gqJmKzICS66TfBMHYVreVG4Ll-pnv3RjYD3-XOU9VPIz0MAAqzVNTYYng
設定入力後は、syncとします。
なお、今回はテスト用に行っているのでいいと思いますが、
本来はapikeyやsecretkeyは非公開とし、
万が一、流出してしまった場合、再度キーの作成を行います。

あとは、確認したい情報をコマンドラインから取得します。
例えばゾーン情報を確認したい場合、list zones

ポッドなら、list pods

また、listだけでなく「?」とすると他に使用可能なコマンドが確認出来ます。

その他の便利機能としては、
コマンド名や引数へのタブ補完、


set display tableでテーブル形式での表示、

set displayでデフォルト表示型式に戻す などがあります。



また、実行ユーザーのホームディレクトリ配下に、
.cloudmonkeyという隠しディレクトリが出来、
その中のhistoryからコマンド履歴が確認出来ます。

ブラウザからも同様のAPIは使用出来、
http://192.168.56.10:8080/client/api?command=******&apikey=******&signature=aaaaa
とすれば、実行出来るようです。
command=******&apikey=******は、コマンド文字列等、
signature=aaaaaは、コマンド文字列等をSHA1で署名し、Base64でエンコード後、
URLエンコードしたものとなります。
詳細は、以下が参考になります。