Apache Libcloudとは
Apache Libcloud(以降、Libcloud)は、Amazon EC2、Rackspace Cloud Servers等、20種類以上のクラウドサービスのAPIを抽象化(1つのAPIで利用できるように)したpythonライブラリです。2009年にApache Software Foundation(ASF)のプロジェクトに加わったようです。詳細は下記をご参照ください。
「メタクラウドAPI」がオープンソースで登場 - Publickey
Apache、共通クラウドAPIを目指す「Libcloud」をトップレベルプロジェクトに:ITpro
実際に使ってみる
こちらを参考に、Libcloudのinstallおよび、AWS EC2のVM listを取得してみました。
ACCESS_IDとSECRET_IDを記載するだけで、簡単に取得できました。
(一部伏せ字。出力結果は見やすくするため改行をいれています。)
(一部伏せ字。出力結果は見やすくするため改行をいれています。)
$ python test.pyしかし、他のクラウド事業者(CloudStack等)で試そうと思った所、Provider名や、API_KEY,SECRET_KEY,URLなどの指定方法が分からない。
---snip---
list_nodes-----------------
[<Node:
uuid=xxxxxxxxxxxxxxxxxxxxxxxx,
name=test,
state=0,
public_ips=['x.x.x.x'],
provider=Amazon EC2 (ap-northeast-1)
...>]
---snip---
LibcloudのHPにも少しサンプルやDocumentはあるのですが、やはり分からない、もしくは難しくて理解できない。。。ネットで調べても情報が少ない。。。
分かりやすいDocumentやサンプルって重要だなと、改めて感じました。
Libcloud用コマンドラインツール lc-tools
Libcloudの使用をあきらめかけた時、「lc-tools」なるものを見つけました。ここ10ヶ月程更新がないのは気になりますが、まずは使ってみます。DocumentやTutorialが用意されていますので、参考にしながら、まずは下記でlc-toolsをinstallします。
%git clone https://github.com/novel/lc-tools.git次にVM listの取得に挑戦です。今回は、私が開発に携わっているIDCフロンティア クラウドセルフサービス(以後、IDCFクラウド)を対象とします。
%cd lc-tools
%sudo python setup.py install
IDCFクラウドはCloudStackを利用しており、CloudStackはLibcloudのサポート対象になっています。
~/.lcrcに下記設定ファイルを用意しました。(一部伏せ字)
[idcf]下記、実行結果です。
driver = cloudstack
access_id = xxx
secret_key = xxx
extra = { "host": "xxx.jp", "secure": True, "path": "/portal/client/api" }
期待通り、VM2台の情報が出力されました。が、出力結果が意外にシンプルすぎます。
(一部伏せ字。出力結果は見やすくするため改行をいれています。)
$ cd lc-tools/
$ ls -1
LICENSE
MANIFEST.in
NEWS
README.md
TODO
VERSION
build
doc
lb-add
lb-destroy
lb-list
lb-member-add
lb-member-list
lb-member-remove
lc-drivers-list
lc-image-list
lc-locations-list
lc-node-add
lc-node-do
lc-node-list
lc-sizes-list
lctools
man
media
provider_specific
scripts
setup.py
test
$ ./lc-node-list -p idcf
---snip---
<Node:
uuid=xxx,
name=test,
state=2,
public_ips=[],
provider=CloudStack
...>
<Node:
uuid=xxx,
name=test2,
state=2,
public_ips=[],
provider=CloudStack
...>
まとめ
- Libcloudは20種以上のクラウドサービスに対応しているので、複数サービスを利用している人にとっては、管理が集約できる可能性あり。
- しかし、現時点では、こちらにも記載があるようにクラウドによって、使用可能な機能に差異がある。また、当然、native API程細かい操作はできない。出力結果も情報が少なすぎるかな。。。
- Libcloudに関する情報が少なく、ほとんどの人にとっては敷居が高い。
- Libcloudのコマンドラインツールであるlc-toolsによって、この敷居が低くなる事を期待したい。
Apacheのプロジェクトなので、今後、盛り上がる事を期待したいです。