※本記事は2022年2月15日に情報を更新しております。
【利用シーン】CloudMonkeyを使う時
皆さん、こんにちは。最近肩こりがひどいGMO クラウドの縞子です。
今回は CloudStack クライアント ツールである CloudMonkey について紹介したいと思います。
GMO クラウド ALTUSは Apache CloudStack をベースとしているため、CloudStack API を利用して各種操作を行うことが可能です。私自身、ALTUS 関連のシステム開発を行う際は API ドキュメントを参照してパラメーターを確認していますが、やはり実際の返却値を確認したい場合もあり、その際は CloudMonkey を活用しています。
まず API をすぐたたけて楽ですし、情報取得先ドメインの切り替えがごく簡単にできますので、例えば検証時にデータを確認したい場合などに非常に便利です。
Ⅰ. インストール手順
ではさっそくインストールを行いましょう!
CloudMonkey は Python で開発されたパッケージであり、Python のパッケージ インストール ツールである easy_install からインストールすることが可能です。
以下、RedHat/CentOS 6,7系と Ubuntu/Debian 系の各プラットフォームへの CloudMonkey インストール手順となります。
Ⅰ-Ⅰ. RedHat/CentOS 6系 7系プラットフォーム
次のコマンドを実行します。
$ sudo –s
# curl https://bootstrap.pypa.io/pip/2.7/get-pip.py| python
# pip install cloudmonkey
# cloudmonkey -v
cloudmonkey 5.3.3
Ⅰ-Ⅱ. Ubuntu/Debian 系プラットフォーム
次のコマンドを実行します。
$ sudo –s
# apt-get install python2.7
# curl https://bootstrap.pypa.io/pip/2.7/get-pip.py| python2.7
# pip2 install cloudmonkey
# cloudmonkey -v
cloudmonkey 5.3.3
Ⅱ. 初期設定手順
CloudStack にアクセスするためには、ユーザー名、パスワード、ドメイン名、接続先 URL、API キーおよびシークレット キーなどが必要ですので、これらの値をまず確認・取得します。
ALTUS では、それぞれ次の手順で各値を確認できます。
Ⅱ-Ⅰ. ALTUS 上の各設定値を確認する
■ユーザー名
(確認方法その1)
ALTUS ポータル画面の「コンソール」ページに表示された、"ドメイン"内に記載されている「db」または「di」から始まる文字列が CloudStack アクセス時のユーザー名となります。
図: ALTUS ポータル コンソール
※ALTUS ポータル画面の詳細はALTUSポータル|GMOクラウド ALTUS(アルタス)Basicシリーズを参照ください。
(確認方法その2)
ALTUS ポータル画面を利用しておらず、通常コンソールからログインしているユーザーの場合、コンソール認証画面の "ユーザー名" に入力している値が対象値となります。
図:ALTUS Basic シリーズ コンソール認証画面
■パスワード
コンソールにログインする際の "パスワード" が対象値となります。
もし CloudStack コンソールへのログイン パスワードが不明な場合は、CloudStack のドメイン管理者(通常ALTUS のご契約者さまがドメイン管理者権限を持っているはずです)にて、ALTUS ガイド サイトの「ユーザーのパスワード変更」の項にある手順でパスワードの再設定を行ってください。
■ドメイン名
(確認方法その1)
ALTUS ポータル サイトの「コンソール」ページに表示された "ドメイン" が対象値となります(図1を参照ください)。
(確認方法その2)
コンソール認証画面に入力する "ドメイン" が対象値となります(図2を参照ください)。
■接続先 URL
(確認方法その1)
ALTUS ポータル サイトの「コンソール」ページに表示された "コンソールURL" + "/api" が対象値となります。
(下記は現在の実際の接続先 URLですが、今後システムのアップデートに伴い変更される可能性があります。あらかじめご了承ください。)
Basic シリーズ: https://tky001b.pf.gmocloud.com/client/api
Isolate シリーズ: https://tky001i.pf.gmocloud.com/client/api
(確認方法その2)
コンソール認証画面の URL + "api" が対象値となります。図: ALTUS ベーシック コンソール認証画面 URL
● API キーおよびシークレットキー
API キーとシークレットキーは、コンソールの「アカウント」ページから取得します。これらの取得手順は、下記の弊社サポート サイトをご確認ください。
• GMOクラウド ALTUSアルタス Basicシリーズ ガイド - APIキー/アクセスキーの取得
• GMOクラウド ALTUSアルタス Isolateシリーズ ガイド - APIキー/アクセスキーの取得
Ⅱ-Ⅱ. 各設定値を CloudMonkey にセットする
確認した各設定値を CloudMonkey にセットします。セットする手順として、次の2パターンが可能です。
- CloudMonkey の設定ファイルに記述する
- CloudMonkey の設定コマンドを実行する
それぞれの手順は次の通りとなります。
1. CloudMonkey の設定ファイルに記述する
CloudMonkey をインストールした後、以下のコマンドを実行しいったんアプリケーションを実行します。アプリケーションは、root アカウント権限を持たない一般ユーザー権限で実行可能です。
$ cloudmonkey
CloudMonkey が起動しますが、exit と入力しすぐにアプリケーション終了します。起動後、ユーザーのホーム ディレクトリー内に .cloudmonkey ディレクトリーが作成されその中に設定ファイル config が保存されていますので、このファイルを編集し設定を追加します。
● config ファイル記述例
[core]
profile = altus-basic
asyncblock = true
paramcompletion = true
history_file = /home/testuser/.cloudmonkey/history
cache_file = /home/testuser/.cloudmonkey/cache
log_file = /home/testuser/.cloudmonkey/log
[ui]
color = true
prompt = >
display = default
[altus-basic]
username = {Basic ユーザー名}
domain = {Basic ドメイン名}
apikey = {Basic API キー}
url = https://tky001b.pf.gmocloud.com/client/api
expires = 600
secretkey = {Basic シークレットキー}
timeout = 3600
password = {Basic パスワード}
verifysslcert = true
[altus-isolate]
username = {Isolate ユーザー名}
domain = {Isolate ドメイン名}
apikey = {Isolate API キー}
url = https://tky001i.pf.gmocloud.com/client//api
expires = 600
secretkey = {Isolate シークレットキー}
timeout = 3600
password = {Isolate パスワード}
verifysslcert = true
※設定内容についての補足※
接続先 CloudStack の情報はプロファイルで管理されます。プロファイルはまず [ ] で囲まれた名前で宣言し、その下に続けてユーザー名、ドメイン名および接続先 URL など CloudStack に接続するための情報を記述します。
上記では、ALTUS Basic シリーズと Isolate シリーズそれぞれのプロファイルを設定しました。{ } でくくられた箇所には、実際に確認した値を指定してください。
なお、[core] で指定されたフィールドでは CloudMonkey 自体の設定を行います。このフィールド内の "profile" で初期起動時のプロファイル名を指定できます。
2. CloudMonkey の設定コマンドを実行する
以下のようにコマンドからでも設定の追加・変更が可能です。
$ cloudmonkey
(local) > set profile altus-basic
Loaded server profile 'altus-basic' with options:
username = admin
domain = /
apikey =
url = http://localhost:8080/client/api
expires = 600
secretkey =
timeout = 3600
password = paXXXwoYYY...(hidden)
verifysslcert = true
(altus-basic) > set username {ユーザー名}
(altus-basic) > set domain {ドメイン名}
(altus-basic) > set apikey {API キー}
(altus-basic) > set url {接続先 URL}
(altus-basic) > set secretkey {シークレットキー}
(altus-basic) > set password {パスワード}
(altus-basic) > sync
252 APIs discovered and cached
※実行コマンドについての補足※
Cloudmonkey を起動した後、最初に "set profile {プロファイル名}" を実行すると指定プロファイルをロードします。もしそのプロファイルが存在していなかった場合、新しいプロファイルが生成されます。このプロファイルに対し、各種値を順にセットして行きます。
最後に sync コマンドで CloudStack との疎通確認を行います。"APIs discovered and cached" と表示されましたら、正常に接続できます。
Ⅲ. API の呼び出し方法
Ⅲ-Ⅰ. コマンドの実行手順
CloudStack API ドキュメントに記載されている各種 API の呼び出しが可能です。
試しに ALTUS Basic シリーズのゾーン一覧を取得してみましょう。
$ cloudmonkey
(altus-basic) > list zones
count = 1
zone:
name = Basic_tky001
id = {ゾーン ID}
allocationstate = Enabled
dhcpprovider = VirtualRouter
localstorageenabled = False
networktype = Basic
securitygroupsenabled = True
tags:
zonetoken = {ゾーン トークン}
Basic のゾーン情報が正常に取得できました。
ちなみに、何らかの文字を入力した後タブ キーを押すと、続けて入力可能な文字列の候補が表示されます。この機能により、呼び出したい API 名や、セットしたいオプション パラメーター名の確認が簡単にできます。
Ⅲ-Ⅱ. その他便利な機能
1.ヘルプの表示
「?」と入力すると、使用できるコマンド一覧が表示されます。
また、「 <コマンド> --help」、「 <コマンド> -h」、「? <コマンド> 」または「help <コマンド> 」で、コマンドのヘルプが表示され、オプション パラメーター名とその概要を確認できます。
2. JSON 形式でのデータ出力
次のいずれかの手順により、データを JSON 形式で出力させることが可能です。
• 起動オプションに –d json を付ける
$ cloudmonkey -d json
• "set display json" コマンドを実行する
$ cloudmonkey
> set display json
なお、表示形式を初期設定に戻したい場合は、次のコマンドを実行します。
> set display default
3. 出力結果をパイプで処理する
CloudMonkey コマンドの実行結果に対し、パイプ(※)を使用することが可能です。例えば "list zones" コマンドの出力データからゾーン名だけを確認したい場合、出力値をパイプで grep コマンドに受け渡しますと値の抽出が可能です。
> list zones | grep "name ="
※パイプ
パイプとは、あるプログラムの出力を別のプログラムに入力する機能です。(参考: IT 用語辞典 e-Words - パイプ)
Ⅳ. 最後に
CloudMonkey のインストール、設定手順および使い方は本当に簡単でしたね。
弊社の ALTUS をご利用くださっている方はもちろん、CloudStack 関連システムの開発者の方で、もしこのツールを利用されていなかった場合はお勧めしますので、ぜひ使ってみてください!
Ⅴ. 参考情報
CloudStack cloudmonkey CLI
Apache CloudStack: API Documentation
GMOクラウド ALTUS Isolateシリーズ ガイド - APIのご利用にあたって
GMOクラウド ALTUS Basicシリーズ ガイド - APIのご利用にあたって
VagrantでIDCFクラウド、Cloud n、ALTUSを使ってみる