こんにちは、鯨井貴博@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エンコードしたものとなります。
詳細は、以下が参考になります。