Fabricで召しませWebVirtMgr それっておいしいの?
Posted on 2014/05/20(Tue) 20:50 in technical
さまり
GUIは入れたくないけど手軽に使えるKVM管理ツール的なものが欲しい(切実)。
この中(http://www.linux-kvm.org/page/Management_Tools)から、 UI TypeがWebかつLicenseがCommercialでないものを探しては、なんか違うなぁ、と思って生きてきた。
今回扱うWebVirtMgrは単にlibvirtを扱うWebUIで、機能はかなり絞られている。
最初にCLIで少し準備をして、起動と終了と画面転送だけ使う。といった具合に割り切る必要があるけど、 簡単なので使い方次第では丁度いいと思うんだ。
トポロジ
大体こういう感じ。一応、管理する側とされる側を分離してみる。まぁIPとかそういうのは適当でいいわ。

いや、ほら、なんか...PCの画像がオサレだったから...意味も無く描いただけで...はい...。
WebVirtMgr(Frontend)のインストール
Ubuntu 14.04 server amd64を使います。このノードには、仮想化機能があってもなくても良いです。
インストール方法はここ(https://github.com/retspen/webvirtmgr/wiki/Install-WebVirtMgr)に書いてあります。
で、実はインストール方法をだばーっと書こうと思っていたんです。
が、つい先日Fabricを用いたDeploy方法がマージされたらしく、明らかにこっちの方が楽でしょという感じなので、これを使います。
https://github.com/retspen/webvirtmgr/tree/master/deploy/fabric
ではスタート(既にFabricをインストールした環境がある場合は、一部スキップできます):
$ sudo apt-get install -yq python-pip gcc python-dev git $ git clone https://github.com/retspen/webvirtmgr.git $ cd webvirtmgr/deploy/fabric $ sudo pip install -r fab_requirements.txt $ fab -H 127.0.0.1 -u username deploy_webvirt
通報
- ログインユーザはsudoersである必要があります
- パスワードは必要な時に聞いてくれるので、fabコマンドと一緒に書く必要はありません(-p passwordみたいに)
警告
- HTTP/HTTPS proxyのことは知らん。sudo -Eしたり/etc/environmentに書いたりしろ
少し待つと、DB初期化について対話形式になるので、適当に答える。アカウントはadmin/adminとかにしておきましょうかね。:
You just installed Django's auth system, which means you don't have any superusers defined. Would you like to create one now? (yes/no): yes Username (leave blank to use 'root'): admin Email address: Password: Password (again): Superuser created successfully. Installing custom SQL ... Installing indexes ... Installed 6 object(s) from 1 fixture(s)
少し待てば完了。 http://<frontend-ip>/ にレッツアクセス。

KVM(Hypervisor)のインストール
今度は、IP経由でlibvirtdに接続できるように設定。これもUbuntu 14.04 server amd64を例にします。
公式ドキュメント万歳
https://help.ubuntu.com/14.04/serverguide/virtualization.html
KVMインストール:
$ sudo apt-get install -yq qemu-kvm libvirt-bin
/etc/libvirt/libvirtd.conf:
listen_tls = 0 listen_tcp = 1 listen_addr = "0.0.0.0" auth_tcp = "none"
/etc/default/libvirt-bin:
libvirtd_opts="-l -d"
TCP LISTENの確認(接続場所はどこからでも。今回はlocalhostでとりあえずチェック):
$ sudo service libvirt-bin restart $ ps ax | grep [l]ibvirtd 9207 ? Sl 0:01 /usr/sbin/libvirtd -l -d $ sudo netstat -pantu | grep libvirtd tcp 0 0 0.0.0.0:16509 0.0.0.0:* LISTEN 9207/libvirtd $ virsh -c qemu+tcp://127.0.0.1/system Welcome to virsh, the virtualization interactive terminal. Type: 'help' for help with commands 'quit' to quit virsh # exit $
WebVirtMgrで設定
アクセスするとログイン画面が出るので、インストール時に設定したアカウントでログインする。今回はadmin/adminで作ったのでそれで。

[Add Host]から管理対象のハイパーバイザの登録。



通報
auth_tcp = "none"の場合でも、ユーザ名とパスワードには何か入れないといけない。ダミーで問題なし。
HDDっぽいアイコンをクリックして、ストレージ画面へ。



ただ、WebVirtMgrには仮想HDDの作成機能はあるけどメディアのアップロード機能は無いらしい。
そこで、普通にsshしてイメージファイルを置くか、イメージファイル置き場をNFSマウントとかして登録するか...とか色々あるんだけど、 今回は普通にsshでログインして、メディアを置くことにする。:
$ wget http://ftp.jaist.ac.jp/pub/Linux/ubuntu-releases/14.04/ubuntu-14.04-server-amd64.iso $ sudo mv ubuntu-14.04-server-amd64.iso /var/lib/libvirt/images/
これで、画面を更新すると、ストレージの参照画面から見えるようになった。

右上の[New Instance]から仮想マシンの作成(ここでは、適当なFlavorを選んでCreate)。


できた。

ではインストールをしてみよう。
まず、Settings->Mediaの[Connect]からCDを挿入する。

画面転送にはNoVNCを使用するので、デフォルトのキーボードマップが日本語の人は、jpに変えておく方が良いでしょう。Access->VNC Keymapから[Set Keymap]。

あとは電源を投入。

起動状態になったら、Access->VNC Consoleの[Console]ボタンで画面が転送されてくる。



警告
もし転送されてこない場合は、NoVNCが正しく動作していないか、ファイアウォールで止まっていないか確認しましょう。
初回起動時は、 sudo service webvirtmgr-novnc start を自分で打っておかないとNoVNCが動作してない可能性があります。
あとは通常のOSインストール手順となるので割愛。まぁでも単にlibvirtの仲介してるだけなので、普通に動きます。

ありがたいこと
- 簡単
- 軽い
- FabricによるDeploy
- ごく基本的な動作に限っては十分に機能する
- NoVNCがちゃんと動く
- Snapshotが使える
- LiveMigrationが使える
- Hypervisorの環境があんまり汚れない
あーだこーだ
- (簡単に)CPUのFeature管理ができない
- (簡単に)メモリの量を後から細かく変更できない
- (簡単に)仮想マシンのNICを後から増やせない
- (簡単に)Open vSwitchには対応していないらしい(⇒対応パッチ書いて投げたら取り込まれたので、一応ブリッジとして使う位は出来ます。 https://github.com/retspen/webvirtmgr/pull/318)
- 「ポチポチすれば簡単にできる」わけではない、だけ
- 仮想マシン管理ページのSettings->XMLを自分で編集すればできるので、Webから抜ける必要はない
openvswitchのポートをBRIDGEで作ってマシンを起動しようとすると、こんな感じで怒られます。

- BlockMigrationはできない
- ストレージにファイルをアップロードできない
- 自分で別途ファイルを置くか、ファイルが置いてあるストレージパスを登録するか、どちらにせよWeb以外の方法で実施
- 追加できるストレージプールタイプが少ない
- プロビジョニングツールとの連携は無い
- 単なるlibvirtのWebフロントエンドと考えると妥当
- SPICEは?
- 今のところ無さそう