IDCFクラウドでAPIを使う(cloudstack-apiコマンドのメモ)

基本的にはドキュメントを読めば、管理画面からできることは殆どできます。

http://docs.idcf.jp/cloud/

なので、簡易使い方メモ的に。
(気になるコマンドがあれば継続して更新します)

事前に、cloudstack-apiコマンドのインストールと、環境設定を済ませておきましょう。

全てのコマンドで[-t]オプションを指定して、テーブル表示させるようにしています。
指定しないと、JSON形式で出力されます。
CSV形式[-c]やXML形式[-x]で出力することもできるので、スクリプトから呼び出す必要があれば、適宜オプションを指定すると便利です。
また、CSV形式で出力する場合は、[--noheaders]というオプションを一緒に指定するとヘッダ行を出力しないため、スクリプトでの利用時は便利です。

----------
<h3>ZoneIDの確認</h3>
<pre>
$ cloudstack-api listZones -t name,id
+-------+--------------------------------------+
|  name |                  id                  |
+-------+--------------------------------------+
| tesla | a117e75f-d02e-4074-806d-889c61261394 |
+-------+--------------------------------------+
</pre>
----------
<h3>ServiceOfferingIDの確認</h3>
仮想マシンタイプを一覧表示します。料金は別途Webで確認する必要があります。
<pre>
$ cloudstack-api listServiceOfferings -t displaytext,cpuspeed,memory,id,name
+------------------------------------+----------+--------+--------------------------------------+---------------+
|            displaytext             | cpuspeed | memory |                  id                  |      name     |
+------------------------------------+----------+--------+--------------------------------------+---------------+
| highcpu.2XL32( 16 CPU / 32GB RAM ) | 2600     | 32768  | 7c548831-427b-437c-9c8b-80dde8031303 | highcpu.2XL32 |
| highcpu.L8( 4CPU / 8GB RAM )       | 2600     | 8192   | 435c1aab-e796-42c7-9320-22ebdc8f50aa | highcpu.L8    |
| highcpu.M4( 2CPU / 4GB RAM )       | 2600     | 4096   | 8cf15770-c3c8-4efc-8ae5-b8327790db76 | highcpu.M4    |
| highcpu.XL16 ( 8CPU / 16GB RAM )   | 2600     | 16384  | 6fda5e0c-e64d-46ea-893d-7e2ac9e128e7 | highcpu.XL16  |
| highmem.L32( 4CPU / 32GB RAM )     | 2200     | 32768  | d59817bc-ed79-4083-8b71-51b26c76d311 | highmem.L32   |
| highmem.M16( 2CPU / 16GB RAM )     | 2200     | 16384  | 12e39b73-3ce6-4e57-9036-3dac0c2b2b06 | highmem.M16   |
| highmem.XL64( 8CPU / 64GB RAM )    | 2200     | 65536  | ee5ee568-76b2-46ad-9221-c695e6f2149d | highmem.XL64  |
| light.S1( 1CPU / 1GB RAM )         | 800      | 1024   | e01a9f32-55c4-4c0d-9b7c-d49a3ccfd3f6 | light.S1      |
| light.S2( 1CPU / 2GB RAM )         | 800      | 2048   | d1aac6d2-bb47-4106-90d0-6a73ac3ae78e | light.S2      |
| standard.L16( 4CPU / 16GB RAM )    | 2400     | 16384  | 6a99ff4c-1a24-4aa6-b4cc-600220987ed0 | standard.L16  |
| standard.M8( 2CPU / 8GB RAM )      | 2400     | 8192   | 7ae143a6-5662-4f1d-bc4c-10defa775bcb | standard.M8   |
| standard.S4( 1CPU / 4GB RAM )      | 2400     | 4096   | 55621f17-4d38-457c-ba34-e6199701b67b | standard.S4   |
| standard.XL32( 8CPU / 32 GB RAM )  | 2400     | 32768  | 354c62e6-b99b-42f2-b5c7-e741f1085422 | standard.XL32 |
+------------------------------------+----------+--------+--------------------------------------+---------------+
</pre>

----------

<h3>TemplateIDの確認</h3>
仮想マシンを作成する際のイメージテンプレートを一覧表示します。
<pre>
$ cloudstack-api listTemplates --templatefilter all -t name,id
+-----------------------------------------------------+--------------------------------------+
|                         name                        |                  id                  |
+-----------------------------------------------------+--------------------------------------+
| AppTemplate CentOS 6.5 64-bit                       | 8f641617-0d03-459c-9736-b903654f6d35 |
| CentOS 5.10 32-bit                                  | 9d6249ff-e84c-4ed9-82df-c8d54c770201 |
| CentOS 5.10 64-bit                                  | 7d373b69-c27a-42dd-a2ac-c015b53e67d4 |
| CentOS 5.3(64-bit) no GUI (vSphere)                 | c1ad59b8-4ada-11e4-bd06-005056812ba5 |
| CentOS 6.5 64-bit                                   | a6896a7d-42a7-4bd7-8534-1b809d22abb8 |
| CentOS 6.5 64-bit for Vagrant                       | 2e5ced0d-13cd-4848-93e6-6e6a0571ffc3 |
| CentOS 7.0 64-bit                                   | 8c54dbd6-4fab-4500-b02f-0e3fa0bb1086 |
| Gen3-SQL                                            | 796fa698-9800-4e0e-915b-77bac7c6b6e5
※以下省略※
</pre>

----------

<h3>SSHキーペア名の確認</h3>
SSHキーペア名を一覧表示します。
FingerPrintしか表示されないので、秘密鍵は確認できません。
<pre>
$ cloudstack-api listSSHKeyPairs -t 
+-------------------------------------------------+-------+
|                   fingerprint                   |  name |
+-------------------------------------------------+-------+
※以下省略※
</pre>

----------

<h3>仮想マシンの作成</h3>
下記の例は、
仮想マシンタイプ : light.S1( 1CPU / 1GB RAM )
Template : CentOS 6.5 64-bit
を作成する場合です。
また、表示名として「vmtest01」、グループ名は「Work」、ホスト名「vmtest01」、SSHキーペア名の指定は「key01」を指定しています。
<pre>
$ cloudstack-api deployVirtualMachine \
                 --serviceofferingid e01a9f32-55c4-4c0d-9b7c-d49a3ccfd3f6 \
                 --templateid a6896a7d-42a7-4bd7-8534-1b809d22abb8 \
                 --zoneid a117e75f-d02e-4074-806d-889c61261394 \
                 --displayname vmtest01 \
                 --group Work \
                 --name vmtest01 \
                 --keypair key01 \
                 -t
</pre>

----------

<h3>仮想マシン一覧の表示</h3>
<pre>
$ cloudstack-api listVirtualMachines -t
</pre>
やたらと項目が多いので、よく使う項目だけを指定すると多少見やすくなります。
<pre>
$ cloudstack-api listVirtualMachines -t id,displayname,group,state,zonename
</pre>

----------

<h3>仮想マシンの起動</h3>
[ID]に仮想マシンIDを指定します。
<pre>
$ cloudstack-api startVirtualMachine --id [ID] -t
</pre>

----------

<h3>仮想マシンの停止</h3>
[ID]に仮想マシンIDを指定します。
Linuxテンプレートからサーバを作成した場合は、自動的にshutdownコマンドが発行されます。
確認はありませんので、運用中サーバを指定する際は要注意。
<pre>
$ cloudstack-api stopVirtualMachine --id [ID] -t
</pre>

----------

<h3>仮想マシンの削除</h3>
[ID]に仮想マシンIDを指定します。
ボリュームごと削除するように「--expunge true」を指定します。
こちらも削除確認はありませんので、実行の際は注意が必要です。
また、--expunge trueを指定しているため、誤って削除した場合の復旧はできません。要注意!!
<pre>
$ cloudstack-api destroyVirtualMachine --id [ID] --expunge true -t
</pre>