2012年10月16日火曜日

複数のクラウド(IaaS)を1つのAPIで利用できるApache Libcloudとlc-toolsを使ってみた

数ヶ月前に「Apache Libcloud」の存在を知り、やっと触る時間がとれたので備忘録的に記載します。また、この間にLibcloudが少しは盛り上がるかと思いましたが、全く盛り上がっていません。今後に期待しつつ。。。

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
---snip---
list_nodes-----------------
[<Node:
  uuid=xxxxxxxxxxxxxxxxxxxxxxxx,
  name=test,
  state=0,
  public_ips=['x.x.x.x'],
  provider=Amazon EC2 (ap-northeast-1)
...>]
---snip---
しかし、他のクラウド事業者(CloudStack等)で試そうと思った所、Provider名や、API_KEY,SECRET_KEY,URLなどの指定方法が分からない。
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
%cd lc-tools
%sudo python setup.py install
次にVM listの取得に挑戦です。今回は、私が開発に携わっているIDCフロンティア クラウドセルフサービス(以後、IDCFクラウド)を対象とします。
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のプロジェクトなので、今後、盛り上がる事を期待したいです。
このエントリーをはてなブックマークに追加

2012年10月14日日曜日

blogにFacebookのlikeボタンをつけてみる

少しハマったので、備忘録として。
ブログ環境としては、Bloggerを使用しています。

ここを参考にlikeボタンのHTML5コードを作成します。
しかし、作成されたコードをそのまま<body>タグを直後にペーストして保存しようとすると、下記エラーが表示されます。
"The reference to entity "appId" must end with the ';' delimiter."
こちらで紹介されている、コードencodeツールを使ってencodeします。
encodeしたものを<body>タグの直後の再度ペーストしたところ、今度は問題なく保存できました。

このブログの右上に、likeボタン設置できました。
ぜひ、"like"をお願いします!

このエントリーをはてなブックマークに追加

2012年10月4日木曜日

IDCFクラウドセルフとCONTEGIX MIRACLOUDを見比べてみる

突然ですが、米国の事業者(CONTEGIX)のIaaSサービス(MIRACLOUD)の画面を見てみましょう。




ん?どこかで見たような画面ですね。
そうです、IDCFクラウドのセルフの画面です。





それもそのはず。どちらもCitrix社のCloudPortal+CloudStackを使用しているからです。

同じソフトウェアを使用しているので、見た目・操作性はほぼ一緒。(サービス仕様の違いから、若干の差異あり)
しかも、日本語も対応済。海外のクラウドサービスなのに、普通に日本語表示してくれれるのは地味にうれしいはず。

MIRACLOUDの料金はこちら。従量課金と月額課金が用意されています。

IDCFクラウドセルフを使っていて、急に海外でサーバが必要になった場合は、同じ操作性のCONTEGIX MIRACLOUDも選択肢に入れてみてはいかがでしょうか。
このエントリーをはてなブックマークに追加