CloudStackーAPIを試してみた(仮想マシンと削除)

# 仮想マシン作成の準備
CloudStackーAPIを試してみた(準備編)の続きとなります。

仮想マシン作成のAPIは、「deployVirtualMachine」となります。必要な情報としては
--serviceofferingids 
--templateid 
--zoneid
--group 
--keypair 
--name
となります。必須項目は公式ドキュメントからみればわかると思います。

まずはzoneidから

```console:listZones
[kanek_ope@localhost ~]$ cloudstack-api listZones -t id
+--------------------------------------+
|                  id                  |
+--------------------------------------+
| 01738d49-2722-4788-891e-848536663c6e |
| 9703cdbb-aee7-41ba-ba80-4807eaa68b80 |
| a117e75f-d02e-4074-806d-889c61261394 |
| a53ff3d3-042b-4cbd-ad16-494bb8d33e06 |
| baf86a6e-4e3b-428e-8fd0-7fda43e468d4 |
| f0954b9b-2626-4549-82ad-ca421073b3bc |
+--------------------------------------+
```
どのidがどのzoneか確認する方法もあるちゃありますが、それについては今重要じゃないので
取りあえず一番上のを

次にサービスオファリング
サービスオファリングとは作成する仮想マシンの性能に関係するものとありますが、用はハード部分のスペックですね。一番低いのにしました。

```console:listServiceOfferings
[kanek_ope@localhost ~]$ cloudstack-api listServiceOfferings -t id,displaytext
+--------------------------------------+------------------------------------+
|                  id                  |            displaytext             |
+--------------------------------------+------------------------------------+
| 10d303d6-d39f-4b15-80a1-982e86ef002b | highio.3XL128( 24CPU /128GB RAM)   |
| 12e39b73-3ce6-4e57-9036-3dac0c2b2b06 | highmem.M16( 2CPU / 16GB RAM )     |
| 354c62e6-b99b-42f2-b5c7-e741f1085422 | standard.XL32( 8CPU / 32 GB RAM )  |
| 435c1aab-e796-42c7-9320-22ebdc8f50aa | highcpu.L8( 4CPU / 8GB RAM )       |
| 55621f17-4d38-457c-ba34-e6199701b67b | standard.S4( 1CPU / 4GB RAM )      |
| 6a99ff4c-1a24-4aa6-b4cc-600220987ed0 | standard.L16( 4CPU / 16GB RAM )    |
| 6fda5e0c-e64d-46ea-893d-7e2ac9e128e7 | highcpu.XL16 ( 8CPU / 16GB RAM )   |
| 7ae143a6-5662-4f1d-bc4c-10defa775bcb | standard.M8( 2CPU / 8GB RAM )      |
| 7c548831-427b-437c-9c8b-80dde8031303 | highcpu.2XL32( 16 CPU / 32GB RAM ) |
| 8cf15770-c3c8-4efc-8ae5-b8327790db76 | highcpu.M4( 2CPU / 4GB RAM )       |
| 95edba75-7cb5-4654-a2f5-f40b7acf7a57 | standard.S8( 1CPU / 8GB RAM )      |
| 9a2f3ee4-af46-4790-9331-753674c16e68 | highio.5XL128( 40CPU /128GB RAM)   |
| d1aac6d2-bb47-4106-90d0-6a73ac3ae78e | light.S2( 1CPU / 2GB RAM )         |
| d59817bc-ed79-4083-8b71-51b26c76d311 | highmem.L32( 4CPU / 32GB RAM )     |
| e01a9f32-55c4-4c0d-9b7c-d49a3ccfd3f6 | light.S1( 1CPU / 1GB RAM )         |
| ec13a7d8-26ce-4c4e-a223-7ef832bb1243 | light.S2( 1CPU / 2GB RAM )         |
| ee5ee568-76b2-46ad-9221-c695e6f2149d | highmem.XL64( 8CPU / 64GB RAM )    |
+--------------------------------------+------------------------------------+
```

次にテンプレートです。OSの選定ですね。

```console:　listTemplates
[kanek_ope@localhost ~]$ cloudstack-api listTemplates --templatefilter executabe -t　id,ostypename
+--------------------------------------+---------------------------------------
|                  id                  |               ostypename
+--------------------------------------+---------------------------------------
| 02ee0a9c-714c-43a6-b3cd-926366432344 | Ubuntu 14.04 (64-bit)
| 02ee0a9c-714c-43a6-b3cd-926366432344 | Ubuntu 14.04 (64-bit)
| 02ee0a9c-714c-43a6-b3cd-926366432344 | Ubuntu 14.04 (64-bit)
| 02ee0a9c-714c-43a6-b3cd-926366432344 | Ubuntu 14.04 (64-bit)
| 02ee0a9c-714c-43a6-b3cd-926366432344 | Ubuntu 14.04 (64-bit)
| 02ee0a9c-714c-43a6-b3cd-926366432344 | Ubuntu 14.04 (64-bit)
| 06c0be30-95e0-4f90-9af5-aa0637974e9b | CentOS 6.4 (64-bit)

```

テンプレートの数は量が多いので割愛

今ある仮想マシンを出力

```console:listVirtualMachines
[kanek_ope@localhost ~]$ cloudstack-api listVirtualMachines -t id,name,group,state
+--------------------------------------+------------+-------+---------+
|                  id                  |    name    | group |  state  |
+--------------------------------------+------------+-------+---------+
| 28fc2c88-fcd0-48db-a516-9605f4d4fed9 | cloud-test | None  | Running |
+--------------------------------------+------------+-------+---------+
```

これで一通り必要な情報はそろいました。いよいよ仮想マシンの作成です。


# 仮想マシン作成

【整理】
cloudstack-api deployVirtualMachine
--serviceofferingid e01a9f32-55c4-4c0d-9b7c-d49a3ccfd3f6
--templateid 02ee0a9c-714c-43a6-b3cd-926366432344
--zoneid 01738d49-2722-4788-891e-848536663c6e
--group test_group
--keypair XXXXXXXXXX
--name test_api-1

keypairは予め作っておきましょう！エラーが発生します

```console:deployVirtualMachine
[kanek_ope@localhost ~]$cloudstack-api deployVirtualMachine　--serviceofferingid e01a9f32-55c4-4c0d-9b7c-d49a3ccfd3f6　--templateid 02ee0a9c-714c-43a6-b3cd-926366432344　--zoneid 01738d49-2722-4788-891e-848536663c6e　--group test_group　--keypair XXXXXXXXXX　--name test-api-1
```

今回はtest-api-1という仮想マシンを作成します
ポータル画面で作成されているか確認します
![api2.PNG](https://qiita-image-store.s3.amazonaws.com/0/187693/043d9a13-7078-0130-61a9-d4d1f70647f5.png)

作成されていることが確認できました。コマンドベースでも確認もできます。

```console:listVirtualMachines 
[kanek_ope@localhost ~]$cloudstack-api listVirtualMachines -t id,name,group,state
+--------------------------------------+------------+------------+---------+
|                  id                  |    name    |   group    |  state  |
+--------------------------------------+------------+------------+---------+
| 28fc2c88-fcd0-48db-a516-9605f4d4fed9 | cloud-test | None       | Running |
| 99689504-0847-4026-8194-17682a4f6408 | test-api-1 | test_group | Running |
+--------------------------------------+------------+------------+---------+
```
# 仮想マシン削除
とても簡単です。destroyVirtualMachineを叩きましょう

```console:destroyVirtualMachine
[kanek_ope@localhost ~]$ cloudstack-api destroyVirtualMachine --id 99689504-0847-4026-8194-17682a4f6408
```
# 終わりに
2回に渡ってAPIの使いかたを紹介しました。APIでやってなんか意味あんのかという話ですが
メンテとか作業とか以外にも、普段からインスタンスがちゃんと作れるのかこれを人の手でやるって相当辛いと思う。これをAPIを利用して自動化できないか、それが私の思いですね。自動化するためにはAnsibleを使ってという話になって異常あったら監視で検知という話はzabbixといった感じになると思うのですが・・といった話まで広がるわけですね。そちらも随時やっていきたいと思います。