*

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

INDEX: OpenStack Swift

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

記事を読む

no image

Nova Availability Zone と Cinder Availability Zone

OpenStack 担当 石川です。 実際に自分が使うか使わないかは置いておき、気になったオプ

記事を読む

dpdk

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

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

記事を読む

no image

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

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

記事を読む

WS000093

VMware vSphere PowerCLIを使った仮想マシンの基本操作

2015年1月18日 by ymaeda vSphereへのログイン 今回はPowerCLIを使

記事を読む

no image

ビットアイルクラウド バーチャルサーバのAPI機能(ベータ)を使う

by kumagai(@kumagai19o) 2014/7/8 ビットアイル総合研究所、熊谷

記事を読む

obj_pool_osd

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

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

記事を読む

519RhQeJZML._SL500_AA300_

OpenStack Swift 書籍の出版のお知らせ

by You Yamagata 2014.04.02山縣です。 この度、インプレスR&D社よ

記事を読む

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

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

blog-ocata
Jujuで Ocataを含む様々なバージョンのOpenStack をデプロイする方法

祝OpenStack Ocata リリース!! ということで、早速デプ

newton
Juju Manual Cloud で OpenStack 環境構築

本当にご無沙汰しております。 この投稿はOpenStack Adve

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 

→もっと見る

PAGE TOP ↑