Fabricで召しませWebVirtMgr それっておいしいの?

WebVirtMgrというKVM/QEMU管理フロントエンドがあるので、使い方を調べてみた話。

Fabricで召しませWebVirtMgr それっておいしいの?

さまり

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を使います。このノードには、仮想化機能があってもなくても良いです。
インストール方法は ここ に書いてあります。

で、実はインストール方法をだばーっと書こうと思っていたんです。
が、つい先日Fabricを用いたDeploy方法がマージされたらしく、明らかにこっちの方が楽でしょという感じなので、これを使います。

ではスタート(既にFabricをインストールした環境がある場合は、一部スキップできます):

1
2
3
4
5
$ 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とかにしておきましょうかね。:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
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インストール

1
$ sudo apt-get install -yq qemu-kvm libvirt-bin

/etc/libvirt/libvirtd.conf

1
2
3
4
listen_tls = 0
listen_tcp = 1
listen_addr = "0.0.0.0"
auth_tcp = "none"

/etc/default/libvirt-bin

1
libvirtd_opts="-l -d"

TCP LISTENの確認(接続場所はどこからでも。今回はlocalhostでとりあえずチェック)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
$ 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でログインして、メディアを置くことにする。:

1
2
$ 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には対応していないらしい
    • 対応パッチ書いて投げたら取り込まれた ので、一応ブリッジとして使う位は出来ます。
    • 「ポチポチすれば簡単にできる」わけではない、だけ
    • 仮想マシン管理ページのSettings -> XMLを自分で編集すればできるので、Webから抜ける必要はない

openvswitchのポートをBRIDGEで作ってマシンを起動しようとすると、こんな感じで怒られます。

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