いろいろあって心が折れたので、
DevCloudに転がることにしました。
で、何も見ないでセットアップしたら
なにやらUbuntuがあがって..
..その次何したらいいかさっぱりわからない..
ということでCloudStackのwikiにある
DevCloudという章だけをまず読んでみようと思い
翻訳してみました。
以下翻訳した文章ですが、
参照の際はAt your own riskでお願いします。
-------
はじめに
DevCloudは、VirtualBox(オープンソースtype-2もしくはデスクトップハイパバイザ)上で動作するOVAイメージとして提供される仮想アプライアンスで、CloudStack開発やテスト用として利用することができます。オリジナルのDevCloudはRAMが2GB必要で、VirtualBoxの仮想マシンとして実行するxen.orgのXenサーバがのっているUbuntu Preciseとして動作します。
開発者はCloudStackアーティファクト(jars, wars)やファイルをDevCloudへビルド、デプロイしたり、DevCloud内部でデータベースをデプロイし管理サーバを起動することができます。開発者はDevCloud内部で動作するCloudStackを使ってDevCloudをホストとして追加することなども可能です。現在ではDevCloudは多くの方に利用されており、特にApache CloudStackの初期リリース(4.0.0-incubating)の間などにリリーステストのために利用されています。
VirtualBox/KVM/Fusion?
DevCloudはVirtualBox(やXenServer)もしくはKVMハイパバイザどちらでも使用出来ます。これらのハイパバイザのウチ1つを選択することだけ必要です、そして次に以下のVirtualBoxもしくはLinux KVMのセットアップ章に従って下さい。
XenServerをネストされたハイパバイザで動作させたい場合は、 「CloudStack 開発のために Fusion を使用した XenServer ハイパバイザ」を参照して下さい。
https://cwiki.apache.org/confluence/display/CLOUDSTACK/XenServer+Hypervisor+for+CloudStack+Development+using+Fusion
セットアップ(VirtualBox)
1. DevCloud2.0仮想アプライアンスを入手します
イメージはこのサイトに記載されたプロセスで生成されています。注意:約900MBあります。
2. VirtualBox4.2もしくは最新版をインストールします
3. 未定義の場合(もしくはVirtualBoxをインストールしたばかりの場合)は、VirtualBox上に"ホストオンリー"ネットワークを作成・設定します
3.1 ネットワークを作成するためには、VirtualBoxの「ファイル」→「環境設定」→「ネットワーク」を選びホストオンリーネットワークを追加してください(訳者注:右上の+マークの着いたNICアイコンを押す)。するとcboxnet0などのような名前で作成されます。(Windowsのみ:ホストオンリーネットワークの追加は実行しなくて構いません、3.2へ進んで下さい)3.2 3.1で作成したネットワークを設定するために、(訳者注:VirtualBox Host-Only Ethernet Adapterを)右クリックし"ホストオンリーネットワークを編集"を選択して下さい。そしけ"DHCPサーバ"タブ上の"サーバを有効化"のチェックを外して下さい。
3.3 (Windowsのみ)OSの「スタート」→「管理ツール」→「セキュリティが強化されたWindowsファイアウォール」を選択して下さい。「Windowsファイアウォールのプロパティ」(中央のパネル「概要」ブロックの一番下)をクリックし、各プロファイル(ドメイン、パブリック、プライベート)タブの状態欄にある「カスタマイズ」ボタンを押して下さい。そして「VirtualBox Host-Only Network」のチェックを外します。そうすることで、ウィンドウズファイアウォールの通信ブロックは発生しません。
4. DevCloud ova イメージをVirtualBoxへインポートします
4.1 PAEモードがアクティブであるか確認します。(VirtualBoxの)「仮想マシン」→「設定」→「システム」→「プロセッサ」タブを選択し、「PAE/NXを有効化」がチェックされていることを確認します。
(訳者注:インポートは、VirtualBoxの「ファイル」→「仮想アプライアンスのインポート」→「アプライアンスを開く」からovaイメージファイルを選択し、「次へ」→「インポート」を実行します)
5. DevCloud 仮想マシンを開始します(Windowsの場合、vboxnet0を使用していないという注意が表示されることがありますので、デフォルトのホストオンリーネットワークを使用するように編集して下さい)
6. 仮想マシンブート後、ユーザ名「root」パスワード「password」でログインします
ネットワーク
DevCloudのデフォルトIPが192.168.56.10となっています。
(複数のDevCloudを実行させたいなど)もしIPアドレスを変更したい場合は
/etc/network/interfacesを変更してリブートして下さい。
7. ラップトップ上で管理サーバを動かします:
7.1 必要な場合は、「CloudStack開発環境のセットアップ」を実行します。
7.2 最新のマスタコードをチェックアウトします
7.3 ラップトップ上で管理サーバを起動します:
mvn -P developer,systemvm clean install
mvn -P developer -pl developer,tools/devcloud -Ddeploydb
mvn -pl :cloud-client-ui jetty:run
管理サーバが起動するまで待機します。
8. (mysql-connector-pythonがインストール済みで管理サーバが作動中の)DevCloudをデプロイします
$ pip install mysql-connector-python (#marvin dependancy)
$ pip install requests (#reqd for marvin deploying the zone)
$ mvn -P developer -pl tools/devcloud -Ddeploysvr
# もしくは、上記のコマンドが動作しない場合は、
# おそらくMAVEN_OPTSを使用してmvnをデバッグモードで動かしています。
# marvinを試して下さい
$ cd tools/devcloud; python ../marvin/marvin/deployDataCenter.py -i devcloud.cfg
上記のコマンドで、いくつかのグローバル設定が登録されているtools/devcloud/devcloud.cfgに定義された設定でゾーンがデプロイされます。コマンド実行後は、管理サーバを再起動させ、グローバル設定を反映させるために既に動作させていたシステムVMを削除して下さい。
9. "ssh root@192.168.56.10"をつかってDevCloudをAll in Oneボックスソリューションとして実行することもできます
(git、java、maven、mkisofsなど)すべてのビルドツール、mysql、nfsはプリインストール、セットアップ済みです。ホストOSで管理サーバを実行する方法を推奨します。そしてIntelliJやEclipseを使ってコード実行やデバッグさせながら動かしたりDevCloudをホスト、ストレージ、ネットワークインフラとしてリプレース/代替として使用することもできます。セットアップ(Linux KVM)
1. 必要条件:KVMモジュール、libvirtユーティリティ(virsh)がインストールされたLinuxマシンを持っていること
2. ここからDevCloud KVMパッケージをダウンロードして下さい
3. devcloud.tarを展開し、自分がインストールしたい場所へ置き、DevCloudディレクトリへcdしてください
4. DevCloudが使用するネットワークを定義します(rootもしくはlibvirt特権ユーザで動作する)
virsh net-define devcloud-nat-0.xml
virsh net-define devcloud-nat-1.xml
virsh net-start devcloud-nat-0
virsh net-start devcloud-nat-1
virsh net-autostart devcloud-nat-0
virsh net-autostart devcloud-nat-1
5. devcloud.xmlを開き、qcow2ファイルのロケーションを各自のシステムに合った場所に変更して下さい
ほかにもいくつかのlibvirtのバージョンに依存する定義などを変更する必要があります。6. devcloud.xmlを定義し、仮想マシンを開始します
virsh define devcloud.xml
virsh start devcloud
7. VirtualBoxセットアップ手順のステップ6から続けて下さい
オプション:拡張ネットワークゾーン
ステップ7をスキップして、拡張ネットワークmarvin設定の1つを使用することができます。完全な機能として、これらは各自のdevcloud上のDNSリゾルバをセットアップする必要があります。セットアップすることで、管理ネットワークは名前解決が可能となります:
$ apt-get install dnsmasq
$ python tools/marvin/marvin/deployDataCenter.py -i tools/devcloud/devcloud-advanced.cfg
devcloud上で管理サーバを実行したい場合:
$ apt-get install dnsmasq
$ python tools/marvin/marvin/deployDataCenter.py -i tools/devcloud/devcloud-advanced_internal-mgt.cfg
次に基本セットアップで説明されているとおり管理サーバを再起動します。
NATネットワーキングモデルの実装であるため、VirtualBox上でこの設定(KVM内の仮想マシン以外)ではConsole proxyは動作しません。
仮想マシンが外部と通信するためにNATを使用している間は、内部のNATネットワーク上のインターフェイスを持たないためアクセスすることができません(10.0.3.2はVirtualBoxスタック内部でありホスト上にはない)。
仮想マシンがどのポートでlistenしているか知っているのであれば、devcloud上からVNCを手動で接続すさせることは可能です(e.g. 192.168.56.10:0)。ホストオンリーネットワークをパブリックとして利用することで迂回することができますが、その場合仮想マシンは物理パブリックアクセスできず、結果何がテストしたいのかということになってしまいます。
DevCloudを用いたインタラクティブデバッギング
Eclipseなどでインタラクティブでバッグングのためにデバッグモードで管理コンソールを動作させることができます。jettyで実行する代わりに:前章のコマンドを実行し、以下のコマンドを実行します。
export MAVEN_OPTS="-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=4000,server=y,suspend=n"
mvn -pl :cloud-client-ui jetty:run
export MAVEN_OPTS=""
トラブルシューティング
グローバル設定のこれらの設定知を確認する:
host(=管理サーバIP)、system.vm.use.local.storage(=true)、適切な管理ネットワークCIDR、secondstorage.allowed.internal.sites
"tiny Linux"テンプレートが選択枝として有効でないのであれば、上記の問題が発生します。
グローバル"host"設定に誤りがあった場合は、仮想マシンのファイル/var/log/cloud/systemvm.logに以下の様なエラーが書き込まれています。
2013-01-22 18:45:07,987 DEBUG [agent.transport.Request] (StatsCollector-2:null) Seq 1-1613496410: Receive
2013-01-22 18:45:11,996 INFO [utils.nio.NioClient] (Agent-Selector:) Connecting to 10.0.3.15:8250
Windowsマシン上の開発:
必ず次の関連パッケージをインストールしなくてはなりません:python、mysql connector for python、bash、(cygwinもしくはmsysgitで使用する)tar
もしくは、プロファイル -P developer,systemvm を使用することでスキップ可能です:-P sytemvmを使ってみて下さい。
もしdevcloudが起動に失敗したり、ブラックスクリーンのままであれば、BIOSのVT/VT-d(仮想化テクノロジー)を有効にする必要があります。ブート中にDeleteボタンを押しBIOS設定を変更して下さい。
ランダムなWindowsマシンにいくつかのバグが時々発生します:
(訳者注:えーっ!)
com.cloud.api.doc.ApiXmlDocWriter ClassNotFound:build-apidoc.shの以下の行を
java -cp $CP com.cloud.api.doc.ApiXmlDocWriter -d "$DISTDIR" $*次のように修正して下さい。
java -cp .$CP com.cloud.api.doc.ApiXmlDocWriter -d "$DISTDIR" $*
Devcloudノートはいつもアラートを発生させます:git global configのautocrlfがtrueとなっていないか確認してください
'-pl'(ピーエル)を'papa'、'lima'内で使用して下さい、'-p1'(ピーイチ)を使用しないで下さい
maven3を使用して下さい、古いバージョンのものは使用しないで下さい
Ubuntu上にmaven3をインストールする手順は http://superuser.com/a/298063 を参照して下さい。デフォルトでJettyが存在しない場合、pom.xmlに以下のpluginタグを使って、mavenの処理に含めることができます:
org.mortbay.jetty
maven-jetty-plugin
6.1.12
mysqlデータベースパスワードとしてNULLをセットする必要があるかもしれません
E.g. http://stackoverflow.com/questions/3032054/how-to-remove-mysql-root-password もし動作しない場合は、rootユーザのパスワードとして非NULL値に変更しファイル incubator-cloudstack/utils/db.properties.override を作成してパスワードを提供し db.root.password を更新して下さい。もしmavenがpythonを発見できない理由でビルドを失敗したのであれば、
mvn -P developer,systemvm clean installを実行した結果以下の様なエラーメッセージが表示されます。
[INFO] Apache CloudStack apidoc Tools .................... SUCCESS [41.071s]
[INFO] Apache CloudStack Developer Tools ................. SUCCESS [0.125s]
[INFO] Apache CloudStack Developer Tools: marvin ......... FAILURE [0.158s]
[INFO] Apache CloudStack Developer Tools: cloudmonkey cli SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 10:28.807s
[INFO] Finished at: Tue Dec 04 17:16:54 PST 2012
[INFO] Final Memory: 34M/145M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.2.1:exec (compile) on project cloud-marvin: Command execution failed. Cannot run program "python" (in directory "C:\src\asf-acl\incubator-cloudstack\tools\marvin\marvin"): CreateProcess error=2, The system cannot find the file specified -> [Help 1]
以下の方法でビルドして下さい。
mvn -P systemvm clean install
--------------------
なるほど管理サーバ側は外で構築してもいいし、仮想アプライアンスの中で作ってもいい..か。
XenServer自体使ったことがないから、管理サーバ別だしでやってみるか..
にしても..
ハイパバイザ重ねがけって結局Console Proxyだめなわけね...