ラベル IDCFクラウド の投稿を表示しています。 すべての投稿を表示
ラベル IDCFクラウド の投稿を表示しています。 すべての投稿を表示

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 ~]#

2016年5月20日金曜日

IDCFクラウドをAPIから使う(準備編)

このエントリーをはてなブックマークに追加
コストの試算を考えるとめんどくさいですけど、クラウドいいですよね。スモールスタートしながらスピード感出して構築できるし。

AWSは押さえておかないといけないですが、今のところ、仕事上、コスト計算しやすいとか大人の事情とかでIDCFクラウドを使うことが多いです。クラウドコンソールからコツコツ作るのもできるけど、せっかくのクラウドなのでAPIからサーバ構築していきたいかなと。基盤にはCloudStackを採用しているようなので、その勉強にもなるし。

ドキュメントはIDCFクラウド API/技術ドキュメントにあるので、これを参照しながら手順はほぼ写経。
gitとpipのインストール

色々と必要なものをインストールしておく。
$ apt-get install --install-suggests git python-pip
 $ apt-get install --install-suggests gcc build-essential libxml2-dev libxslt1-dev python-dev
cloudstack-apiをインストールする。
 $ pip install git+https://github.com/idcf/cloudstack-api
バージョン確認する。
 $ cloudstack-api --version
APIを利用するために設定ファイル(.idcfrc)を作成する。
 
[account]
host=${idcf_end_point}
api_key=${your_api_key}
secret_key=${secret_key}
設定ファイルが効いているか確認する。
 $ cloudstack-api listZones
こんな感じでずらずらと出てきたら成功。
{
  "listzonesresponse": {
    "count": 5,
    "zone": [
      {
        "allocationstate": "Enabled",
        "dhcpprovider": "VirtualRouter",
:
:
:
利用できるゾーンの確認。ちなみに-tは結果をテーブル形式で出力する。何もなければJSON形式で出力される。
 
$ cloudstack-api listZones -t id
+--------------------------------------+
|                  id                  |
+--------------------------------------+
| 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 |
+--------------------------------------+
利用できるサーバタイプの確認
 
$ 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 id,ostypename
+--------------------------------------+---------------------------------------+
|                  id                  |               ostypename              |
+--------------------------------------+---------------------------------------+
| 06c0be30-95e0-4f90-9af5-aa0637974e9b | CentOS 6.4 (64-bit)                   |
| 08d914bc-c632-4179-95ca-7913aca0275e | Red Hat Enterprise Linux 6.4 (64-bit) |
| 107a7aba-0867-4fa6-927d-772944208ba9 | CentOS 6.4 (64-bit)                   |
| 180ec450-2570-4d6c-b2c0-c40316814025 | CentOS 6.4 (64-bit)                   |
| 180ec450-2570-4d6c-b2c0-c40316814025 | CentOS 6.4 (64-bit)                   |
:
:
後は作っていこう。