DevCloud2による最新CloudStack環境の構築

CloudStackにはDevCloudというお試し開発環境がある。その実体は仮想アプライアンスになっていて、VirtualBoxKVM上で最低限のCloudStack環境を動かせるようになっている。OS XでもVirtualBoxが動くのだけど、新たにVirtualBoxをインストールするのはいやなので、既存のVMWare Fusion + Ubuntu環境でDevCloudを動かしてみた。VMWare Fusion 5はNested Virtualizationに対応しているので*1、ゲストOS内でKVMなどのハイパーバイザを動かすことができる。う〜ん、すばらしい!

DevCloudの動かし方は、CloudStackのWikiに詳しいので、それに従えばOK。ただし、4.2-SNAPSHOTというgitのmasterブランチを使っていたので、ソースコードを一部直す必要があったけど、これは後述する。

VMWare FusionVMにはCPU 2個とメモリ4GBを割り当てた。ゲストOSはUbuntu 12.04である。ちゃんと/proc/cpuinfoでvmxとeptフラグが立っていることを確認すること。

まず、KVM用のDevCloudパッケージをダウンロードして、virshを使ってゲストOSを起動する。事前に最低限libvirt-binやqemu-kvmは必要。VNCクライアントが欲しければ、xtightvncviewerあたりも入れておく。

ubuntu# virsh net-define devcloud-nat-0.xml
ubuntu# virsh net-define devcloud-nat-1.xml
ubuntu# virsh net-start devcloud-nat-0
ubuntu# virsh net-start devcloud-nat-1
ubuntu# virsh net-autostart devcloud-nat-0
ubuntu# virsh net-autostart devcloud-nat-1

ubuntu# vi devcloud.xml # xxx.qcow2のパスを変更

ubuntu# virsh define devcloud.xml
ubuntu# virsh start devcloud

ゲストOSのIPアドレスは192.168.56.10になるので、rootでsshログインできることを確認する。

続いて、ゲストOS内で最新のソースコードをgitで取得して、管理サーバを起動する。

devcloud# git clone https://git-wip-us.apache.org/repos/asf/cloudstack.git

まず、管理サーバをビルドして、

devcloud# mvn -P developer,systemvm clean install

データベースをデプロイして、

devcloud# mvn -P developer -pl developer,tools/devcloud -Ddeploydb

管理サーバを起動する。

devcloud# mvn -pl :cloud-client-ui jetty:run

なお、古いドキュメントにはTomcatが必要みたいな記述があるが、最新版ではJettyを使っているので、おそらくTomcatは不要だと思う。また、antじゃなくてmavenを使う点が4.0.xとの違い。

この時点でhttp://192.168.56.10:8080/clientにアクセスすればポータルのログイン画面が表示される。

このまま環境を作っていてもいいのだけど、基本ゾーンをデプロイする手段が用意されているので、これを使う。ただ、そのままではすんなり動かなかった。まず足りないパッケージを入れる(この辺の実装にはPythonが使われているようだ)。

devcloud# apt-get install python-mysql.connector

devcloud# mvn -P developer -pl tools/devcloud -Ddeploysvr

しかし、tools/marvin/marvin/cloudstackConnection.pyのmarvin_request関数で"TypeError: 'dict' object is not callable."が発生して止まってしまう。これは216行目の"response.json()"を"response.json"に変更すればOKで、基本ゾーンのデプロイが完了する。

ポータルにログインすると、一通りちゃんと動いているようだ。

しばらく待つとtiny Linuxのテンプレートが使えるようになるので、インスタンスを起動してみる。

VNCコンソールも使えるが、あまり実用的な速度で動かないので、sshを使うとよい。

KVMのゲストOSの中ではハイパーバイザとしてXenServerが使われていて、xe vm-listするとDom0以外に4つのCloudStack関連のDomUが起動していることがわかる。それにしても、VMWare FusionKVMXenという仮想化が入れ子になって、それなりの性能で動いているのはなかなかすごいなぁ。

ということで、CloudStackに興味あるけど、環境構築が面倒そうと思っている人は試してみればどう?

*1:VMWare Fusion 4でもNested Virtualizationに対応していたけど、5ではGUIで設定可能になった。