2016年5月22日日曜日

IDCFクラウドをAPIから使う(VM作成編)

このエントリーをはてなブックマークに追加
IDCFクラウドをAPIから使う(準備編)でCLIから使えるようにしたので簡単にサクっと作ってみた。

IDCFクラウド API Referencesを見たけど、利用できるAPIは限られているけど普段使いにはあまり問題はなさそう。(英語のままのもあるけど)

とりあえずSSHの認証鍵を生成して、
$ssh-keygen -t rsa
クラウドにアップロードする。
$ cloudstack-api registerSSHKeyPair --name idcf --publickey "$(cat .ssh/生成した公開鍵)" -t
SSH公開鍵がアップロードされたのは、クラウドコンソールで確認してもいいしCLIで確認してもいい。今回はCLIからやってみる。
$ cloudstack-api listSSHKeyPairs -t
+-------------------------------------------------+------------+
|                   fingerprint                   |    name    |
+-------------------------------------------------+------------+
| 31:8a:93:ff:c3:12:8a:ae:19:**:**:**:**:**:**:** | idcf |
+-------------------------------------------------+------------+
マシン生成する。今回作るサーバプランは一番安いlight.S1にしておく。OSはCentOS7.1を選ぶ。念のためサーバプランとOSテンプレートのid確認方法をもう一度。
$ 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 )    |
+--------------------------------------+------------------------------------+
$ cloudstack-api listTemplates --templatefilter executable -t name,id | grep Cent | grep "7\.1"
| CentOS 7.1 64-bit                                   | ee7bc439-0186-49b4-82e4-bf821db89601 |
| CentOS 7.1 64-bit                                   | ee7bc439-0186-49b4-82e4-bf821db89601 |
| CentOS 7.1 64-bit                                   | ee7bc439-0186-49b4-82e4-bf821db89601 |
| CentOS 7.1 64-bit                                   | ee7bc439-0186-49b4-82e4-bf821db89601 |
| CentOS 7.1 64-bit                                   | ee7bc439-0186-49b4-82e4-bf821db89601 |
| CentOS 7.1 64-bit for Vagrant                       | aa39af2c-a91e-4c7d-8bf1-4e4754959b11 |
| CentOS 7.1 64-bit for Vagrant                       | aa39af2c-a91e-4c7d-8bf1-4e4754959b11 |
| CentOS 7.1 64-bit for Vagrant                       | aa39af2c-a91e-4c7d-8bf1-4e4754959b11 |
| CentOS 7.1 64-bit for Vagrant                       | aa39af2c-a91e-4c7d-8bf1-4e4754959b11 |
| CentOS 7.1 64-bit for Vagrant                       | aa39af2c-a91e-4c7d-8bf1-4e4754959b11 |
| Hatohol 15.06 on CentOS 7.1                         | eedabe07-5f0e-4822-b9d9-6bbb4a04de85 |
| Hatohol 15.06 on CentOS 7.1                         | eedabe07-5f0e-4822-b9d9-6bbb4a04de85 |
| Hatohol 15.06 on CentOS 7.1                         | eedabe07-5f0e-4822-b9d9-6bbb4a04de85 |
| Hatohol 15.06 on CentOS 7.1                         | eedabe07-5f0e-4822-b9d9-6bbb4a04de85 |
| MIRACLE ZBX 2.2.11 on CentOS 7.1                    | 9cf7a110-caaa-4ae5-807c-218c80c88f31 |
| MIRACLE ZBX 2.2.11 on CentOS 7.1                    | 9cf7a110-caaa-4ae5-807c-218c80c88f31 |
| MIRACLE ZBX 2.2.11 on CentOS 7.1                    | 9cf7a110-caaa-4ae5-807c-218c80c88f31 |
| MIRACLE ZBX 2.2.11 on CentOS 7.1                    | 9cf7a110-caaa-4ae5-807c-218c80c88f31 |
テンプレートは同じのが表示されるが気にせず、このidを使おう。ZoneIDはクラウドコンソールの「ゾーン管理」から「有効」になっているものを使う。僕の場合はradianだった。group、displayname、nameはお好みで。
$ cloudstack-api deployVirtualMachine --serviceofferingid e01a9f32-55c4-4c0d-9b7c-d49a3ccfd3f6 --templateid ee7bc439-0186-49b4-82e4-bf821db89601 --zoneid a53ff3d3-042b-4cbd-ad16-494bb8d33e06 --group highmountain --displayname highmountain --name highmountain --keypair keypairname
正常に終わるとJSON形式でidとjobidが返ってきた。
{
  "deployvirtualmachineresponse": {
    "id": "...",
    "jobid": "..."
  }
}
この後クラウドコンソールから確認すると仮想マシンがRunning状態でできていた。
コマンドからも確認してみる。
$ cloudstack-api listVirtualMachines -t

ここでインターネットから接続するためにPublicIPを確認する。
$ cloudstack-api listPublicIpAddresses -t id,ipaddress
+--------------------------------------+---------------+
|                  id                  |   ipaddress   |
+--------------------------------------+---------------+
| 205e7e75-aae1-4de9-a1fe-b79e4947a715 | xxx.xxx.xxx.xxx |
+--------------------------------------+---------------+
ソースIPはNATできないのでポートフォワードの設定をする。今回はSSH。
$ cloudstack-api createPortForwardingRule --ipaddressid 205e7e75-aae1-4de9-a1fe-b79e4947a715 --privateport 22 --protocol TCP --publicport 22 --virtualmachineid f3991f90-0962-4948-a965-508c013700c6
クラウドコンソールからも確認できるが、これもコマンドから確認できる。
$  cloudstack-api listPortForwardingRules -t
ここでSSHしてみるとログインできる!
$ ssh root@xxx.xxx.xxx.xxx -i ~/.ssh/PrivateKey
    ________  ______   ______                 __  _
   /  _/ __ \/ ____/  / ____/________  ____  / /_(_)__  _____
   / // / / / /      / /_  / ___/ __ \/ __ \/ __/ / _ \/ ___/
 _/ // /_/ / /___   / __/ / /  / /_/ / / / / /_/ /  __/ /
/___/_____/\____/  /_/   /_/   \____/_/ /_/\__/_/\___/_/

[root@hostname ~]#

0 件のコメント:

コメントを投稿