前回紹介した Virt-Factory について、まずはサーバ側のインストールと設定手順を解説します。yappo さんと hirose31 さんに wktk されてしまったので、もう後には引けません。
おおまかな手順は 本家サイトのドキュメント の通りなのですが、ここの通りやってもうまくいかないので、試してみたい方は以下の手順を参考にしてください。
なお、本家から提供されているパッケージが Fedora 7 用のものしかないため、楽をするために Fedora 7 で検証しています。また、現時点での Virt-Factory のバージョンは 0.0.4 です。
とりあえず検証目的なので、こいつらはオフにしときます。手順は省略。
virt-factory.et.redhat.com のリポジトリを見に行くようにする。
$ sudo wget http://virt-factory.et.redhat.com/download/repo/virt-factory.repo --output-document=/etc/yum.repos.d/virt-factory.repo
virt-factory.repo の内容が間違ってるので、以下のように修正。
#!diff
--- /etc/yum.repos.d/virt-factory.repo.orig 2007-12-29 21:14:22.000000000 +0900
+++ /etc/yum.repos.d/virt-factory.repo 2007-12-29 21:14:55.000000000 +0900
@@ -1,11 +1,11 @@
[virt-factory-fedora]
name=Virt-factory packages
-baseurl=http://virt-factory.et.redhat.com/download/repo/fc$releasever/stable/$arch/
+baseurl=http://virt-factory.et.redhat.com/download/repo/f$releasever/stable/i386/
enabled=1
gpgcheck=0
[virt-factory-srpms]
name=Virt-factory src packages
-baseurl=http://virt-factory.et.redhat.com/download/repo/fc$releasever/stable/srpms
+baseurl=http://virt-factory.et.redhat.com/download/repo/f$releasever/stable/srpms
enabled=0
gpgcheck=0
$arch の部分は Fedora 7 32bit だと i686 になってしまうが、リポジトリのディレクトリは i386 なので、修正が必要。64bit だと $arch 部分はそのままでいいかも。
普通に virt-factory-server パッケージを yum で入れると、依存関係で cobbler と koan が一緒にインストールされるのですが、updates にある cobbler 0.6.4 と koan 0.6.3 がインストールされてしまって、virt-factory-server が正常に動きません。なので、virt-factory.et.redhat.com にある 0.6.2 を明示的にインストールしてやります。
$ sudo yum install cobbler-0.6.2-1.fc7 koan-0.6.2-1.fc7
次に、Virt-Factory サーバ本体である virt-factory-server パッケージをインストールします。また、依存関係にはないものの、python-setuptools も必要なので一緒に入れておきます。
$ sudo yum install virt-factory-server python-setuptools
Virt-Factory はデータベースとして PostgreSQL を利用しています。(MySQL への対応予定もあるらしい。)以下のコマンドを実行して、Virt-Factory から PostgreSQL が利用できる状態にします。
$ sudo /etc/init.d/postgresql initdb
$ sudo vf_fix_db_auth
Puppet を利用してるので、とりあえず Puppet サーバを起動しておきます。(が、この段階では起動しなくても問題ないです。)
$ sudo /sbin/chkconfig puppetmaster on
$ sudo /etc/init.d/puppetmaster start
次に qpidd を起動します。これは必ず起動しておく必要があります。qpidd は、Virt-Factory のクライアント/サーバ間でのメッセージングのために利用されています。
$ sudo /sbin/chkconfig qpidd on
$ sudo /etc/init.d/qpidd start
最後に virt-factory-server を起動します。
$ sudo /sbin/chkconfig virt-factory-server on
$ sudo /etc/init.d/virt-factory-server start
初回は起動時はデータベースとかテーブルを自動で作ってくれます。
vf_server import により、以下の内容が実行されます。
ただし、プロファイルは cobbler import で作成されるものと一緒で、Virt-Factory に適したものではないため、捨ててしまって構いません。
まず、/etc/virt-factory/settings を2箇所いじります。mirrors のところは元は FC-7 になってるのですが、F-7 にしておく必要があります。
address は Virt-Factory サーバの IP アドレスを指定します。今回の import とは直接関係しませんが、どのみち変える必要があるので変えておきます。
mirrors:
F-7: [ 'rsync://ftp.jaist.ac.jp/pub/Linux/Fedora/releases/7/Fedora/i386/os/', '']
this_server:
address: '192.168.25.134'
または、iso ファイルをダウンロードしてきて、
$ sudo mkdir /mnt/dvdiso
$ sudo mount -t iso9660 -o loop F-7-i386-DVD.iso /mnt/dvdiso
とマウントして、/etc/virt-factory/settings には
mirrors:
F-7: [ '/mnt/dvdiso', '']
と設定してもいいです。検証で何度もやる場合には、iso イメージを持ってきておいた方が早いですね。
Virt-Factory でインストールするディストリビューションが Fedora 7 以外の場合には、repos セクションや mirrors セクションを適切に修正する必要があります。
設定ができたら、以下のコマンドを実行します。
$ sudo vf_server import
cobbler report で結果を確認できます。distro, repo, profile が登録されていることが確認できます。
$ sudo cobbler report
distro : F-7-i386
kernel : /var/www/cobbler/ks_mirror/F-7/images/pxeboot/vmlinuz
initrd : /var/www/cobbler/ks_mirror/F-7/images/pxeboot/initrd.img
kernel options : {}
architecture : x86
ks metadata : {'tree': 'http://@@server@@/cblr/links/F-7-i386'}
breed : redhat
distro : F-7-xen-i386
kernel : /var/www/cobbler/ks_mirror/F-7/images/xen/vmlinuz
initrd : /var/www/cobbler/ks_mirror/F-7/images/xen/initrd.img
kernel options : {}
architecture : x86
ks metadata : {'tree': 'http://@@server@@/cblr/links/F-7-xen-i386'}
breed : redhat
repo : F-7-i386-core-lite
mirror : http://download.fedora.redhat.com/pub/fedora/linux/releases/7/Everything/i386/os/
keep updated : True
local filename : F-7-i386-core-lite
rpm list : ['m2crypto', 'python-simplejson']
createrepo_flags : -c cache
repo : F-7-i386-updates-lite
mirror : http://download.fedora.redhat.com/pub/fedora/linux/updates/7/i386/
keep updated : True
local filename : F-7-i386-updates-lite
rpm list : ['cobbler', 'koan', 'python-cheetah', 'yum-utils', 'puppet',
'facter']
createrepo_flags : -c cache
repo : F-7-i386-vf_repo
mirror : http://virt-factory.et.redhat.com/download/repo/f7/stable/i386/
keep updated : True
local filename : F-7-i386-vf_repo
rpm list :
createrepo_flags : -c cache
repo : F-7-x86_64-core-lite
mirror : http://download.fedora.redhat.com/pub/fedora/linux/releases/7/Everything/x86_64/os/
keep updated : True
local filename : F-7-x86_64-core-lite
rpm list : ['m2crypto', 'python-simplejson']
createrepo_flags : -c cache
repo : F-7-x86_64-vf_repo
mirror : http://virt-factory.et.redhat.com/download/repo/f7/stable/x86_64/
keep updated : True
local filename : F-7-x86_64-vf_repo
rpm list :
createrepo_flags : -c cache
profile : F-7-i386
distro : F-7-i386
kickstart : /etc/cobbler/kickstart_fc6.ks
kernel options : {}
ks metadata : {}
virt file size : 5
virt ram : 512
virt type : auto
virt path :
repos : []
profile : F-7-xen-i386
distro : F-7-xen-i386
kickstart : /etc/cobbler/kickstart_fc6.ks
kernel options : {}
ks metadata : {}
virt file size : 5
virt ram : 512
virt type : auto
virt path :
repos : []
virt-factory.et.redhat.com にサンプルプロファイルがあるので、こいつをインポートしてみます。
$ sudo rpm -Uvh http://virt-factory.et.redhat.com/download/profiles/vf-profile-Container-1-2.fc7.noarch.rpm
$ sudo rpm -Uvh http://virt-factory.et.redhat.com/download/profiles/vf-profile-Test1-1.234-2.fc7.noarch.rpm
$ sudo vf_import
cobbler report を実行すると、以下の4つのプロファイルが登録されていることが確認できます。
profile : Container::F-7-i386
distro : F-7-i386
kickstart : /var/lib/virt-factory/kick-fc6.ks
kernel options : {}
ks metadata : {'server_name': '192.168.10.14', 'node_bare_packages': 'libvirt\npython-virtinst\nqemu\nkvm\n', 'cryptpw': '$1$mF86/UHC$WvcIcX2t6crBz2onWxyac.', 'server_param': '--server=http://192.168.10.14:5150', 'node_common_packages': 'koan\npuppet\nvirt-factory-nodes\nvirt-factory-register\nqemu\nkvm\n', 'network_param': '--allow-bridge-config', 'extra_post_magic': '/sbin/chkconfig 345 qemu on\n', 'node_virt_packages': '', 'token_param': '--profile=Container::F-7-i386'}
virt file size : 0
virt ram : 0
virt type : qemu
virt path :
repos : ['F-7-i386-updates-lite', 'F-7-i386-core-lite', 'F-7-i386-vf_repo']
profile : Container::F-7-xen-i386
distro : F-7-xen-i386
kickstart : /var/lib/virt-factory/kick-fc6.ks
kernel options : {}
ks metadata : {'server_name': '192.168.10.14', 'node_bare_packages': 'libvirt\npython-virtinst\nxend\n', 'cryptpw': '$1$mF86/UHC$WvcIcX2t6crBz2onWxyac.', 'server_param': '--server=http://192.168.10.14:5150', 'node_common_packages': 'koan\npuppet\nvirt-factory-nodes\nvirt-factory-register\nxen\nkernel-xen\n', 'network_param': '--allow-bridge-config', 'extra_post_magic': _, 'node_virt_packages': _, 'token_param': '--profile=Container::F-7-xen-i386'}
virt file size : 0
virt ram : 0
virt type : xenpv
virt path :
repos : ['F-7-i386-updates-lite', 'F-7-i386-core-lite', 'F-7-i386-vf_repo']
profile : Test1::F-7-i386
distro : F-7-i386
kickstart : /var/lib/virt-factory/kick-fc6.ks
kernel options : {}
ks metadata : {'server_name': '192.168.10.14', 'node_bare_packages': _, 'cryptpw': '$1$mF86/UHC$WvcIcX2t6crBz2onWxyac.', 'server_param': '--server=http://192.168.10.14:5150', 'node_common_packages': 'koan\npuppet\nvirt-factory-nodes\nvirt-factory-register\nqemu\nkvm\n', 'network_param': '', 'node_virt_packages': _, 'token_param': '--profile=Test1::F-7-i386'}
virt file size : 5
virt ram : 512
virt type : qemu
virt path :
repos : ['F-7-i386-updates-lite', 'F-7-i386-core-lite', 'F-7-i386-vf_repo']
profile : Test1::F-7-xen-i386
distro : F-7-xen-i386
kickstart : /var/lib/virt-factory/kick-fc6.ks
kernel options : {}
ks metadata : {'server_name': '192.168.10.14', 'node_bare_packages': _, 'cryptpw': '$1$mF86/UHC$WvcIcX2t6crBz2onWxyac.', 'server_param': '--server=http://192.168.10.14:5150', 'node_common_packages': 'koan\npuppet\nvirt-factory-nodes\nvirt-factory-register\nxen\nkernel-xen\n', 'network_param': '', 'node_virt_packages': _, 'token_param': '--profile=Test1::F-7-xen-i386'}
virt file size : 5
virt ram : 512
virt type : xenpv
virt path :
repos : ['F-7-i386-updates-lite', 'F-7-i386-core-lite', 'F-7-i386-vf_repo']
cobbler import した時のプロファイルと違って、ks_metadata に koan, pupppet, virt-factory-nodes, virt-factory-register など、Virt-Factory クライアントとして必要なパッケージが含まれていたり、キックスタートファイル(/var/lib/virt-factory/kick-fc6.ks )の %post セクションで、Virt-Factory クライアントとして必要な処理が実行されています。
virt-factory-wui パッケージをインストールするのですが、そのままインストールすると、rubygem-rails-2.0.1-1.fc7 がインストールされてしまい、動作しません。なので、明示的に rubygem-rails-1.2.3-1.fc7 をインストールします。
$ sudo yum install rubygem-rails-1.2.3-1.fc7
その後 virt-factory-wui パッケージをインストールします。
$ sudo yum install virt-factory-wui
デフォルトでは 127.0.0.1 でリッスンするようになっているので、他のマシンからアクセスする場合には、/etc/init.d/virt-factory-wui を書き換えます。
#!diff
--- /etc/init.d/virt-factory-wui.orig 2007-12-30 02:41:06.000000000 +0900
+++ /etc/init.d/virt-factory-wui 2007-12-30 02:41:23.000000000 +0900
@@ -10,7 +10,7 @@
VIRTFACTORY_DIR=/usr/share/virt-factory-wui
MONGREL_LOG=/var/log/virt-factory-wui/mongrel.log
MONGREL_PID=/var/run/virt-factory-wui/mongrel.pid
-ADDR=127.0.0.1
+ADDR=0.0.0.0
RAILS_ENVIRONMENT=production
USER=virtfact
GROUP=virtfact
起動します。
$ sudo /sbin/chkconfig virt-factory-wui on
$ sudo /etc/init.d/virt-factory-wui start
css ファイルへのパスがおかしいので、/usr/share/virt-factory-wui/app/views/layouts/virt-factory-layout.rhtml を修正します。
#!diff
--- /usr/share/virt-factory-wui/app/views/layouts/virt-factory-layout.rhtml.ori2007-12-30 02:44:24.000000000 +0900
+++ /usr/share/virt-factory-wui/app/views/layouts/virt-factory-layout.rhtml 2007-12-30 02:44:40.000000000 +0900
@@ -7,7 +7,7 @@
<!-- dynamically filled in page title -->
<title>virt-factory: <%= @page_title %></title>
- <link rel="stylesheet" href="<%= ActionController::AbstractRequest.relative_url_root %>/style.css" type="text/css" />
+ <link rel="stylesheet" href="/style.css" type="text/css" />
</head>
3000番 ポートにアクセスして、admin, fedora でログインします。
virt-factory-ampm は、Virt-Factory のコマンドラインクライアントで、リモートホスト上に仮想マシンを作成したり、仮想マシンの起動/停止を行ったり、といったことができます。
$ sudo yum install virt-factory-ampm
このままだと ampm コマンドを実行する度に no config file found と言われてうざいので、空の .ampm_config を作成しておきます。
$ touch ~/.ampm_config
help を見ると、どんなことができるかがざっとわかります。
$ ampm --help
global options
--help, -h
--verbose, -v
--server <server url>
--username <username>
--passowrd <password>
valid modes include:
pause, create, list, start, add, shutdown, query, unpause, delete
pause:
Pause a guest
ampm pause guest_name [--guest_id] <guest_id>
create:
Create a new guest
--help, -h
--verbose, -v
--host <hostname> the host to run the guest on
--profile <profilename> the profile to create the guest with
list:
List information about virt-factory
valid sub modes are hosts, guests, status, profiles, tasks, users
hosts list machines capabable of running guests
guests list virtulized guests
status list status of virtulized guests
profiles list profiles available for creating guests or hosts
tasks list tasks that are queued
users list users
start:
Start up a guest
ampm start guest_name [--guest_id] <guest_id>
add:
Add a new user to virt-factory
--username <username>
--password <password>
--first <first_name
--middle <middle_name>
--last <last_name>
--email <email address>
--description <desription>
shutdown:
Shutdown a guest
ampm shutdown guest_name [--guest_id] <guest_id>
query:
Query a guest for more info about what host or profile a guest is running
--help, -h
--verbose, -v
--host <host> which host a guest is running on
--profile <profile> which profile a guest is running
unpause:
Unpause a guest
ampm unpause guest_name [--guest_id] <guest_id>
delete:
Delete a task, profile, or user
--help, -h
--verbose, -v
--task_id <task_id> delete a task from the task queue
--user_id <user_id> delete a user
~~次回はクライアント側のインストールと設定手順について解説予定です。~~解説アップしました。