IDCFクラウドで仮想マシンを作成する


IDCFクラウドを使うことになりまして。
まずは仮想マシンを立ち上げてみようと思った次第です。

[こちら](http://docs.idcf.jp/cloud/)のGetting　Startedを参考にさせていただきました。

※ 使用したPCの環境は「MacOS X 10.9.5」です。
※ アカウント登録は済ませている体で進めます。

## cloudstack-apiのインストール
gitもpipも我がMacにはインストール済みだったので、以下コマンドのみでインストール完了しました。

```
sudo pip install git+https://github.com/idcf/cloudstack-api
```

## 設定ファイル(.idcfrc)
参考ページに書かれている通りに作業しました。

## 仮想マシン立ち上げてみる

APIから以下のように実行しています。

```console:実行イメージ
% cloudstack-api listZones -t id
+--------------------------------------+
|                  id                  |
+--------------------------------------+
| a117e75f-d02e-4074-806d-889c61261394 |
+--------------------------------------+
[naokienokido@Naoki-Enokido-MacBook-Pro] ~
% cloudstack-api listServiceOfferings -t id,displaytext
+--------------------------------------+------------------------------------+
|                  id                  |            displaytext             |
+--------------------------------------+------------------------------------+
| 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 )       |
| 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 )         |
| ee5ee568-76b2-46ad-9221-c695e6f2149d | highmem.XL64( 8CPU / 64GB RAM )    |
+--------------------------------------+------------------------------------+
[naokienokido@Naoki-Enokido-MacBook-Pro] ~
% cloudstack-api listTemplates --templatefilter executable -t id,ostypename
+--------------------------------------+---------------------------------------+
|                  id                  |               ostypename              |
+--------------------------------------+---------------------------------------+
| 275896bd-4f4a-429d-a3ad-4c5273978951 | Windows Server 2008 R2 (64-bit)       |
| 2e5ced0d-13cd-4848-93e6-6e6a0571ffc3 | CentOS 6.4 (64-bit)                   |
| 33134882-9eee-45f5-8520-51ff8f3b9ec9 | Ubuntu 12.04 (64-bit)                 |
| 34c8ff3d-21a9-45c3-a9c2-c69b00be7a4a | Red Hat Enterprise Linux 6.4 (64-bit) |
| 382ca26e-048f-4aae-a733-ac3d5bfaec51 | Windows Server 2012 R2 (64-bit)       |
| 3d911756-3b96-4d18-b70f-226c570556e6 | Windows Server 2008 R2 (64-bit)       |
| 47f01aad-b11c-4d00-a82f-26646bad9115 | Red Hat Enterprise Linux 5.9 (64-bit) |
| 4cdf1019-fb19-4c99-acc6-367f7a815c79 | Windows Server 2012 (64-bit)          |
| 5cd70dbe-721f-4e50-af19-12d0f1dc63dd | Ubuntu 12.04 (64-bit)                 |
| 6a0f801a-900d-4dcd-9802-e21f8602adad | Debian GNU/Linux 6(64-bit)            |
| 6ccce6a1-8c26-48cc-8ee7-316149e5b1d9 | Windows Server 2012 R2 (64-bit)       |
| 6e677875-f46b-4bce-a867-f840c96f8904 | Windows Server 2008 R2 (64-bit)       |
| 782a845c-24bc-4538-a4c9-4821290200b3 | Ubuntu 12.04 (64-bit)                 |
| 78bae077-bb64-4752-8604-36ef8a747b34 | Ubuntu 12.04 (64-bit)                 |
| 7d373b69-c27a-42dd-a2ac-c015b53e67d4 | CentOS 5.9 (64-bit)                   |
| 8c54dbd6-4fab-4500-b02f-0e3fa0bb1086 | CentOS 6.4 (64-bit)                   |
| 8f641617-0d03-459c-9736-b903654f6d35 | CentOS 5.6 (64-bit)                   |
| 9ac92eb1-810f-429e-a225-95b1e4a000a6 | CentOS 6.4 (64-bit)                   |
| 9d6249ff-e84c-4ed9-82df-c8d54c770201 | CentOS 5.9 (32-bit)                   |
| a0d20503-c040-4638-ade9-16a968728696 | Windows Server 2012 (64-bit)          |
| a6896a7d-42a7-4bd7-8534-1b809d22abb8 | CentOS 6.4 (64-bit)                   |
| b03bca79-fbe5-44e2-b73c-ceb61d0da16d | Ubuntu 10.04 (64-bit)                 |
| b2d2a4fa-d694-444b-b961-0a0f9d7fe0f3 | Ubuntu 12.04 (64-bit)                 |
| b39f9f23-6784-4161-8143-8b130df3f09f | Other Linux (64-bit)                  |
| ba03656a-6c5f-4d8f-a5fd-516616c7a125 | Windows Server 2012 (64-bit)          |
| bfc969ae-7d70-4310-9c77-cc6f89d67d3c | Windows Server 2012 R2 (64-bit)       |
| c535256e-bf28-4fc8-b9a7-545aa458ff22 | Windows Server 2008 R2 (64-bit)       |
| c6634eb6-7650-47e3-a1a6-540145ed6967 | Windows Server 2012 R2 (64-bit)       |
| d7dd6015-e940-4563-a2a0-25c8b2f58ead | Red Hat Enterprise Linux 5.9 (32-bit) |
| f1604ef7-6d56-40ee-b698-f53b39ffa2f7 | Windows Server 2012 (64-bit)          |
| f42bd2d4-6f15-49d7-b166-f2d041695925 | Ubuntu 12.04 (64-bit)                 |
+--------------------------------------+---------------------------------------+
% cloudstack-api deployVirtualMachine --serviceofferingid e01a9f32-55c4-4c0d-9b7c-d49a3ccfd3f6 --templateid 2e5ced0d-13cd-4848-93e6-6e6a0571ffc3 --zoneid a117e75f-d02e-4074-806d-889c61261394 --group neno-test --keypair neno-test --name test-instance-1
{
  "deployvirtualmachineresponse": {
    "id": "0e48581e-071b-45d3-a61e-bc0189d32135",
    "jobid": "43a1b0f0-a146-43f3-8c59-5a1ec445bd3d"
  }
}
```

クラウドコンソールから、バーチャルルータにファイアウォールとポートフォワードでSSHできるように設定して、ログインしてみます。
ポートはとりあえず49222としました。

ポートフォワードの設定

|コメント|プライベートポート|パブリックポート|プロトコル|仮想マシン|
|-----------------|---------|---|-----|-------|
|test-ssh|22|49222|TCP|test-instance-1|

ファイアウォールの設定

|コメント|ソースCIDR|タイプ|ポートレンジ|
|-----------------|---------|---|-----|
|test-ssh|My IPを指定|TCP|49222|

ログイン後にOSのバージョンを確認してみたところ、

```
| 2e5ced0d-13cd-4848-93e6-6e6a0571ffc3 | CentOS 6.4 (64-bit)                   
```

のテンプレートを指定したつもりだったんですが、CentOS 6.5と表示されました。

```
[root@test-instance-1 ~]# cat /etc/redhat-release
CentOS release 6.5 (Final)
```

templateのOSを判断するには、listTemplatesで取得できるnameの方がよいのかも？

```
% cloudstack-api listTemplates --templatefilter executable -t id,ostypename,name

+--------------------------------------+---------------------------------------+-----------------------------------------------------+
|                  id                  |               ostypename              |                         name                        |
+--------------------------------------+---------------------------------------+-----------------------------------------------------+
| 275896bd-4f4a-429d-a3ad-4c5273978951 | Windows Server 2008 R2 (64-bit)       | Windows Server 2008 R2 Ent SP1 + SQL2014 Std        |
| 2e5ced0d-13cd-4848-93e6-6e6a0571ffc3 | CentOS 6.4 (64-bit)                   | CentOS 6.5 64-bit for Vagrant                       |
| 33134882-9eee-45f5-8520-51ff8f3b9ec9 | Ubuntu 12.04 (64-bit)                 | ubuntu-1gb-opt                                      |
| 34c8ff3d-21a9-45c3-a9c2-c69b00be7a4a | Red Hat Enterprise Linux 6.4 (64-bit) | Red Hat Enterprise Linux 6.5 64-bit                 |
| 382ca26e-048f-4aae-a733-ac3d5bfaec51 | Windows Server 2012 R2 (64-bit)       | Windows Server 2012 R2 Std + SQL2014 Std            |
| 3d911756-3b96-4d18-b70f-226c570556e6 | Windows Server 2008 R2 (64-bit)       | Windows Server 2008 R2 Ent SP1 + SQL2008 R2 Std SP3 |
| 47f01aad-b11c-4d00-a82f-26646bad9115 | Red Hat Enterprise Linux 5.9 (64-bit) | Red Hat Enterprise Linux 5.10 64-bit                |
| 4cdf1019-fb19-4c99-acc6-367f7a815c79 | Windows Server 2012 (64-bit)          | Windows Server 2012 Std                             |
| 5cd70dbe-721f-4e50-af19-12d0f1dc63dd | Ubuntu 12.04 (64-bit)                 | Ubuntu-1G                                           |
| 6a0f801a-900d-4dcd-9802-e21f8602adad | Debian GNU/Linux 6(64-bit)            | VyOS 1.0.4 64-bit                                   |
| 6ccce6a1-8c26-48cc-8ee7-316149e5b1d9 | Windows Server 2012 R2 (64-bit)       | Windows Server 2012 R2 Std                          |
| 6e677875-f46b-4bce-a867-f840c96f8904 | Windows Server 2008 R2 (64-bit)       | Windows Server 2008 R2 Ent SP1 + SQL2012 Std SP2    |
| 782a845c-24bc-4538-a4c9-4821290200b3 | Ubuntu 12.04 (64-bit)                 | Ubuntu-1GB-2                                        |
| 78bae077-bb64-4752-8604-36ef8a747b34 | Ubuntu 12.04 (64-bit)                 | Ubuntu Server 12.04 LTS 64-bit                      |
| 7d373b69-c27a-42dd-a2ac-c015b53e67d4 | CentOS 5.9 (64-bit)                   | CentOS 5.10 64-bit                                  |
| 8c54dbd6-4fab-4500-b02f-0e3fa0bb1086 | CentOS 6.4 (64-bit)                   | CentOS 7.0 64-bit                                   |
| 8f641617-0d03-459c-9736-b903654f6d35 | CentOS 5.6 (64-bit)                   | AppTemplate CentOS 6.5 64-bit                       |
| 9ac92eb1-810f-429e-a225-95b1e4a000a6 | CentOS 6.4 (64-bit)                   | cl-base-centos65-08192014                           |
| 9d6249ff-e84c-4ed9-82df-c8d54c770201 | CentOS 5.9 (32-bit)                   | CentOS 5.10 32-bit                                  |
| a0d20503-c040-4638-ade9-16a968728696 | Windows Server 2012 (64-bit)          | Windows Server 2012 Std + SQL2012 Std SP2           |
| a6896a7d-42a7-4bd7-8534-1b809d22abb8 | CentOS 6.4 (64-bit)                   | CentOS 6.5 64-bit                                   |
| b03bca79-fbe5-44e2-b73c-ceb61d0da16d | Ubuntu 10.04 (64-bit)                 | Ubuntu Server 10.04 LTS 64-bit                      |
| b2d2a4fa-d694-444b-b961-0a0f9d7fe0f3 | Ubuntu 12.04 (64-bit)                 | Ubuntu Server 14.04 LTS 64-bit                      |
| b39f9f23-6784-4161-8143-8b130df3f09f | Other Linux (64-bit)                  | [Alpha] CoreOS 472.0.0 64-bit                       |
| ba03656a-6c5f-4d8f-a5fd-516616c7a125 | Windows Server 2012 (64-bit)          | Windows Server 2012 Std + SQL2008 R2 Std SP3        |
| bfc969ae-7d70-4310-9c77-cc6f89d67d3c | Windows Server 2012 R2 (64-bit)       | Windows Server 2012 R2 Std + SQL2008 R2 Std SP3     |
| c535256e-bf28-4fc8-b9a7-545aa458ff22 | Windows Server 2008 R2 (64-bit)       | Windows Server 2008 R2 Ent SP1                      |
| c6634eb6-7650-47e3-a1a6-540145ed6967 | Windows Server 2012 R2 (64-bit)       | Windows Server 2012 R2 Std + SQL2012 Std SP2        |
| d7dd6015-e940-4563-a2a0-25c8b2f58ead | Red Hat Enterprise Linux 5.9 (32-bit) | Red Hat Enterprise Linux 5.10 32-bit                |
| f1604ef7-6d56-40ee-b698-f53b39ffa2f7 | Windows Server 2012 (64-bit)          | Windows Server 2012 Std + SQL2014 Std               |
| f42bd2d4-6f15-49d7-b166-f2d041695925 | Ubuntu 12.04 (64-bit)                 | Ubuntu-1GB-op                                       |
+--------------------------------------+---------------------------------------+-----------------------------------------------------+
```

クラウドコンソールから仮想マシンを作成する際に「おすすめTemplate」として表示されているCentOS 6.5 64bitのtemplateは以下のもののようだったので、これを使って再度仮想マシンを作成しました。

```
| a6896a7d-42a7-4bd7-8534-1b809d22abb8 | CentOS 6.4 (64-bit)                   | CentOS 6.5 64-bit                                   
```

## HTTPで通信してみる

Apacheで疎通してみました。

立ち上げた仮想マシンにSSHでログインして、
`yum install httpd`
でApacheインストールして起動させます。

バーチャルルータにHTTPの設定を追加します。
ポートはとりあえず49280としました。

ポートフォワード

|コメント|プライベートポート|パブリックポート|プロトコル|仮想マシン|
|-----------------|---------|---|-----|-------|
|test-http|80|49280|TCP|test-instance-1|

ファイアウォール

|コメント|ソースCIDR|タイプ|ポートレンジ|
|-----------------|---------|---|-----|
|test-http|My IPを指定|TCP|49280|


これで、http://グローバルIP:49280 で該当のインスタンスに疎通できました。
簡単ですね。

## まとめ
クラウドコンソールからはもちろんですが、APIツールを使用しても簡単に仮想マシンの作成ができますね。
これから色々と弄っていきたいと思います。