DevCloud2による最新CloudStack環境の構築
CloudStackにはDevCloudというお試し開発環境がある。その実体は仮想アプライアンスになっていて、VirtualBoxやKVM上で最低限の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 FusionのVMには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 Fusion、KVM、Xenという仮想化が入れ子になって、それなりの性能で動いているのはなかなかすごいなぁ。
ということで、CloudStackに興味あるけど、環境構築が面倒そうと思っている人は試してみればどう?
*1:VMWare Fusion 4でもNested Virtualizationに対応していたけど、5ではGUIで設定可能になった。