*

OpenStack API でSoftLayerを操作する “Jumpgate”

公開日: 最終更新日:2014/12/22  |  By  |  API, OpenStack, OSS, Softlayer

by Ikuo Kumagai (@kumagai19o)

この記事はAdvent Calendar ダブルエントリー記事です。
Softlayer Advent Calendar 2014 12/18 の記事です。
OpenStack Advent Calendar 2枚目 2014 12/18 の記事です。

今回はJumpgateというSoftlayerのGithub上のプロジェクトをご紹介します。

Jumpgate とは何か?

JumpgateのGet Started を見てみましょう。

Jumpgate is a library, which acts as a translation layer to convert incoming OpenStack calls to different cloud provider’s API calls.

JumpgateはOpenStack呼び出しを他のクラウドプロバイダのAPIコールに変換するレイヤーとして動作するライブラリとのことです。私は最初SoftlayerのAPI変換だけだと思っていたのですが、もっと汎用的なAPI変換をするもののようですね。その1実装例としてSoftLayerが実行できるということなのでしょうか。ドキュメントには余り記載がないので動かしてみたいと思います。

Jumpgateを試す

百聞は一見にしかず。Quick Startに従って作業をします。目標はOpenStackのクライアントからSoftLayerを操作することです。
※以下、実行した環境のOSはUbuntu 14.04です。

必要パッケージのインストール

Quick Startには記載がありませんが、以下のパッケージがないと途中でエラーが出ます。予めインストールしましょう。

 
$ sudo apt-get install gcc python-dev python-setuptools git python-pip gunicorn
$ git clone https://github.com/softlayer/jumpgate.git
$ cd jumpgate
$ sudo python setup.py install
(中略)
Using /usr/lib/python2.7/dist-packages
Finished processing dependencies for jumpgate==0.1
 

テストサーバーの起動

Quick Startの手順に従うとtest_server.shを起動するようです。実際に実行してみるとこのプロセスはフォアグラウンドで起動してしまうので、バックグラウンド実行します。
※各種設定は jumpgate.conf 上に行いますが、デフォルトでetc/jumpgate.confが用意してあり、test_server.shを実行すると、デフォルト状態で起動します。今回の動作確認ではデフォルトで特に問題はありませんでした。

 
 $ ./test_server.sh &
2014-12-18 02:45:17 [9221] [INFO] Listening at: http://127.0.0.1:5000 (9221)
2014-12-18 02:45:17 [9221] [INFO] Using worker: sync
2014-12-18 02:45:17 [9226] [INFO] Booting worker with pid: 9226
2014-12-18 02:45:17 [9229] [INFO] Booting worker with pid: 9229
(後略)※

※起動時に何度かwarningが出ますが、動作上問題はありません。気になるようであればこちらの対応をすることで出なくなります。

サーバが起動していることをcurlで確認します。OpenStack環境と同様のレスポンスがあります。(※厳密に比較はしていません)

$ curl localhost:5000
(中略) サーバー側の出力が出ますが今回は関係ありません。
{"versions": {"values": [{"status": "stable", "updated": "2014-04-17T00:00:00Z", "media-types": [{"base": "application/json", "type": "application/vnd.openstack.identity-v3+json"}], "id": "v3.0", "links": [{"href": "http://localhost:5000/v3", "rel": "self"}, {"href": "http://docs.openstack.org/api/openstack-identity-service/3/content/", "type": "text/html", "rel": "describedby"}, {"href": "http://docs.openstack.org/api/openstack-identity-service/3/identity-api-ref-3.pdf", "type": "application/pdf", "rel": "describedby"}]}, {"status": "stable", "updated": "2013-03-06T00:00:00Z", "media-types": [{"base": "application/json", "type": "application/vnd.openstack.identity-v2.0+json"}], "id": "v2.0", "links": [{"href": "http://localhost:5000/v2.0", "rel": "self"}, {"href": "http://docs.openstack.org/api/openstack-identity-service/2.0/content/", "type": "text/html", "rel": "describedby"}, {"href": "http://docs.openstack.org/api/openstack-identity-service/2.0/identity-dev-guide-2.0.pdf", "type": "application/pdf", "rel": "describedby"}]}]}}

テスト(SoftlayerのAPI実行)

さて、本当にOpenStackのAPIでSoftLayerを操作できるのか試してみたいと思います。OpenStackのクライアントをインストールします。

 
$ sudo apt-get install python-keystoneclient python-novaclient
 

次にSoftLayerのアカウント情報を設定します。これについてはドキュメント上に記載が有りませんが、tempestの設定を見るとヒントがあります。

 
$ vi openrc
export OS_AUTH_URL=http://127.0.0.1:5000/v2.0
export OS_TENANT_NAME=<SoftlayerのアカウントID>
export OS_USERNAME=<Softlayerのusername>
export OS_PASSWORD=<SoftlayerのAPI key>
$ . openrc
 

では幾つかコマンドを実行してみます。availability-zone-listを見ると

$ nova availability-zone-list
+-------+-----------+
| Name  | Status    |
+-------+-----------+
| ams01 | available |
(中略)
| wdc01 | available |
+-------+-----------+

Softlayerのリージョンが全て表示されました。そして、本当にSoftLayerを操作できているようです。
と、いうことで操作できることがわかりましたのでインスタンス生成までやってみました。

$ nova flavor-list
+----+-----------------------------+-----------+------+-----------+------+-------+-------------+-----------+
| ID |            Name             | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public |
+----+-----------------------------+-----------+------+-----------+------+-------+-------------+-----------+
| 1  | 1 vCPU, 1GB ram, 25GB, SAN  | 1024      |  25  | 0         |      | 1     | 1           | True      |
| 2  | 1 vCPU, 1GB ram, 100GB, SAN | 1024      | 100  | 0         |      | 1     | 1           | True      |
| 3  | 2 vCPU, 2GB ram, 100GB, SAN | 2048      | 100  | 0         |      | 2     | 1           | True      |
| 4  | 4 vCPU, 4GB ram, 100GB, SAN | 4096      | 100  | 0         |      | 4     | 1           | True      |
| 5  | 8 vCPU, 8GB ram, 100GB, SAN | 8192      | 100  | 0         |      | 8     | 1           | True      |
+----+-----------------------------+-----------+------+-----------+------+-------+-------------+-----------+

$ nova image-list
+--------------------------------------+--------------------------------------------------------------------------------+--------+--------+
| ID                                   | Name                                                                           | Status | Server |
+--------------------------------------+--------------------------------------------------------------------------------+--------+--------+
| a3da320d-2b56-4a3c-ad75-2f810a038abf |  CohesiveFT VNS3 Cloud Networking Appliance v3.0.4r15SL (64bit) - Free Edition | active |        |
| 01c0e333-00ee-4fb6-89ad-5a408691c446 |  CohesiveFT VNS3 Cloud Networking Appliance v3.0.4r15SL (64bit) - UL           | active |        |
| 3d9be3bc-267a-4441-bb62-25a73fe62642 | 100G CentOS 5 32-bit                                                           | active |        |
(後略)

$ nova keypair-add --pub-key ~/.ssh/id_rsa.pub slkey
$ nova boot --flavor 1 --image 54f4ed9f-f7e6-4fe6-8b54-3a7faacd82b3 --key-name slkey test1
(後略)

インスタンスが起動するまで2~3分かかりますが、起動しました。作成されるのはSoftLayerのVirtual Serverのようです。

$ nova list
+---------+-------+--------+------------+-------------+----------------------------------------------+
| ID      | Name  | Status | Task State | Power State | Networks                                     |
+---------+-------+--------+------------+-------------+----------------------------------------------+
| 7542000 | test1 | ACTIVE | -          | Running     | public=169.53.130.164; private=10.122.82.210 |
+---------+-------+--------+------------+-------------+----------------------------------------------+

その他、ネットワークの作成やbaremetalサーバの操作などは試してみましたができませんでした。前者は仕様的な問題、後者はまだ実装されていないといったところのようです。

まとめ

正直こんなに簡単に動くとは思っていなかったので驚きましたし、AWSへの対応についての記事も見かけました。
OpenStack APIを通して各種クラウドを操作できるとなると、また違った使い方も見えてきそうです。

【参考】
http://bodenr.blogspot.fr/2014/03/managing-openstack-softlayer-resources.html

 

お知らせ

2015年2月3日、4日にOpenStack Days Tokyo 2015 が開催されます。事前登録があれば参加は無料です。OpenStack上でのシステム構築を体験できるクラウドインテグレーション体験ラウンジなどもあり、私もスタッフとして立つ予定ですので是非ご参加ください。

関連記事

no image

OpenStackで使用可能なWindows10イメージの作成方法

ビットアイルの田波です。 久々の更新です。 今回はWindows10イメージをOpenStack上

記事を読む

no image

Swift 1.11.0 CHANGELOG の翻訳

by You Yamagata 2013.1.23(Swift関連の記事の一覧は インデッ

記事を読む

no image

サーバ1台での構築(Grizzly版) ~ Swiftによるオブジェクトストレージシステムの構築(7)

by You Yamagata 2013.04.17(Swift関連の記事の一覧はこちらをご覧くださ

記事を読む

top

HACK! THE Juju/MAAS

6/8~6/10まで幕張メッセで開催されたInterop 2016。皆さん参加されましたでしょうか。

記事を読む

obj_pool_osd

Ceph アーキテクチャ 解説 (Ceph Clientによるデータの分割)

by kumagai(@kumagai19o) 2014/6/24 毎度ご無沙汰しています。ビ

記事を読む

ODT2015logo

OpenStack Days Tokyo 2015

来る2月3日,4日にはOpenStack Days Tokyo 2015が開催されます。 日本国内

記事を読む

no image

API による Swift の操作 ~ Swiftによるオブジェクトストレージシステムの構築(5)

by Yamagata 2013.2.25(Swift関連の記事の一覧はこちらをご覧ください)前回

記事を読む

no image

INDEX: OpenStack Swift

by You Yamagata 2014.4.15Swiftによるオブジェクトストレージシステムの構

記事を読む

01.all

CentOS7 RDO Juno with Ceph

ご無沙汰しています。 先日のブログではCentOS7/RDOで OpenStack Juno環境を

記事を読む

image_000001

Ceph ~ブロックアクセス可能な分散ストレージ

by kumagai(@kumagai19o) 2014/3/12 ご無沙汰しています。ビッ

記事を読む

no image

ビットアイル総合研究所は、クラウド技術に関する調査&研究を通して、社会と会社に寄与していくことを目的に、ビットアイル・エクイニクスの企業内研究所として2011年8月に設立されました。

top
HACK! THE Juju/MAAS

6/8~6/10まで幕張メッセで開催されたInterop 2016。皆

dpdk
OpenStack OVS VXLAN ネットワークの高速化

少し前の話になりますが、3月2日に開催された 日本仮想化技術株式会社様

no image
OpenStack DBaas (Trove) を動かした話

本記事はOpenStack Advent Calendar 2015 

no image
OpenStackで使用可能なWindows10イメージの作成方法

ビットアイルの田波です。 久々の更新です。 今回はWindows10

DSC_000001_opening
OpenStack Summit Tokyo

ついにOpenStack Summit が 10/27-30 に東京で

→もっと見る

PAGE TOP ↑