Apache CloudStackをDocker上で簡単に試す方法


この記事は、CloudStack Advent Calendar 2015 12月3日用のエントリです。
別のネタを考えていましたが、ちょうどApache CloudStack 4.6が出てきたので変更します。

Apache CloudStack 4.6が出ました

巷ではOpenStackの話題でにぎわっている昨今ですが、ひっそりとApache CloudStack 4.6がリリースされました。
- リリースノート
- PublicKey - オープンソースのクラウド基盤「Apache CloudStack 4.6」リリース。DockerイメージでのCloudStack提供も開始

いくつか機能改善が行われているのですが、このエントリではDocker Hubでのイメージ提供について触れたいと思います。

Apache CloudStack 4.6は、従来からのソースやバイナリでの提供以外に、Dockerイメージとしての提供が行われています。今までも有志によるCloudStackイメージがありましたが、こちらは公式のリポジトリです。ここから簡単に管理サーバーやシミュレーターのイメージをpullしたり、イメージの使い方を確認したりできます。

CloudStack目指すところは「All-in-one」あるいは「Turn-key」(ターンキー=鍵を回せばすぐ使える)なPrivate IaaSなので、Dockerで管理サーバーをサクッと建てられてしまうというのは良い方向性ですね。

やってみた

しばらく使ってなかったCentOSがVMware Workstation上にあったので、とりあえずdocker pullしてみます。今回はシミュレータ用のイメージを使っています。

しばらく待つとイメージのダウンロードが終わります。

終わったら実行してみます。
ちなみにイメージ名を指定する際に、cloudstack/simulator:4.6.0 のようにイメージ名の後にタグを指定すると、そのバージョンの環境を使用できます。使用可能なタグの一覧は Docker Hubで確認できます。

プロンプトが返ってきても、CloudStackのサービスが上がるまでしばらく掛かるので待ちます。少し経ったら、ブラウザでアクセスしてみましょう…はい動きましたー。
拍子抜けするぐらい簡単です。

ちょっとだけ、つまづきながら

Simulatorの場合、あたかもBasic ZoneやAdvanced Zoneがあるかのように見せるためのスクリプトがイメージ内に用意されているので、それを流します。
起動したdockerに入ってコマンドをたたく時は
docker exec -ti cloudstack /bin/bash
でコンテナのbashを使えます。

下記はAdvanced Zoneの展開をしています。

ちなみに、これを実行しようとした際に、3つほどエラーに遭遇しました。
ImportError: No module named marvinに対しては
python /root/tools/marvin/setup.py install

ImportError: No module named Crypto.PublicKeyに対しては
pip install pycrypto

ImportError: No module named ecdsaに対しては
pip install ecdsa
でエラー解消しました。

できた!

完了すると、Simulator用のダミーインフラが出来上がります。

このお手軽さ、そして壊しても困らない環境というのはいいですね。
「こんな感じのインフラいいなぁ」と思った方はシミュレーターではなく、次は本物にぜひチャレンジを!