Cobbler+KoanでScientific Linux 6.0なKVMのVMをコマンド一発で作成する
エンジニアは七夕までにCentOS6と巡り逢えるのでしょうか。
今回はいつも使っているCentOSから趣を変えて、Scientific Linuxを触ってみます。色々検証する為にScientific LinuxなVMを簡単につくれる環境をCobbler+Koanを使って準備しました。
Cobbler+Koan
Cobbler, Koanについては以前(っても結構前ですが)こんな発表をしたことがありまして、内容についてはそちらが参考になればと思います。CentOSと同じくScientific LinuxもRHELクローンなので、同じ方法が使えるというわけです。
環境
試した環境は1台のCentOS5.6物理サーバー上に、Cobbler+KoanがセットアップされたKVMの仮想母艦機です。
実際の流れ
Cobbler+Koanのセットアップ手順やKVM環境については省略しますが、mizzyさんのCobblerやKoan、KVM on CentOS 5.4が参考になります。
ネットワークインストールに必要なファイルの用意
コマンド一発です。"SL6.0-x86_64"というdistro名で準備します。
sudo cobbler import --path=rsync://ftp.jaist.ac.jp/pub/Linux/scientific/6.0/x86_64/os/ --name=SL6.0-x86_64
ずらずらと表示されて、ネットワークインストールに必要な準備が整います。完了したら確認。
sudo cobbler distro report --name SL6.0-x86_64
Name : SL6.0-x86_64
Architecture : x86_64
Breed : redhat
Comment :
Initrd : /var/www/cobbler/ks_mirror/SL6.0-x86_64/images/pxeboot/initrd.img
Kernel : /var/www/cobbler/ks_mirror/SL6.0-x86_64/images/pxeboot/vmlinuz
Kernel Options : {}
Kernel Options (Post Install) : {}
Kickstart Metadata : {'tree': 'http://@@http_server@@/cblr/links/SL6.0-x86_64'}
Management Classes : []
OS Version : generic26
Owners : ['admin']
Red Hat Management Key : <<inherit>>
Red Hat Management Server : <<inherit>>
Template Files : {}
sudo cobbler profile report --name SL6.0-x86_64
Name : SL6.0-x86_64
Comment :
DHCP Tag : default
Distribution : SL6.0-x86_64
Enable PXE Menu? : 1
Kernel Options : {}
Kernel Options (Post Install) : {}
Kickstart : /var/lib/cobbler/kickstarts/default.ks
Kickstart Metadata : {}
Management Classes : []
Name Servers : []
Name Servers Search Path : []
Owners : ['admin']
Parent Profile :
Red Hat Management Key : <<inherit>>
Red Hat Management Server : <<inherit>>
Repos : []
Server Override : <<inherit>>
Template Files : {}
Virt Auto Boot : 0
Virt Bridge : xenbr0
Virt CPUs : 1
Virt File Size(GB) : 5
Virt Path :
Virt RAM (MB) : 512
Virt Type : qemu
cobblerのバージョンが古いと大元のdistroのKickstart Metadata情報が入らず、VM作成時のkickstartファイルの内容によってはOSインストールが失敗することがあるっぽいです。今回試したcobblerのバージョンでは問題なく情報が追加されました(cobbler-2.0.9-1.el5)
VM作成用のテンプレート情報作成
cobbler importでdistro, profileは自動的に作成され、これらの情報をもとにKoanでVM作成が行えますが、環境によって値を調整したい時にはsystemを登録して、各種のカスタマイズを行います。SL6.0-x86_64-templateというsystemを登録しました。
sudo cobbler system add --name=SL6.0-x86_64-template --profile SL6.0-x86_64
sudo cobbler system report --name SL6.0-x86_64-template
Name : SL6.0-x86_64-template
Comment :
Gateway :
Hostname :
Image :
Kernel Options : {}
Kernel Options (Post Install) : {}
Kickstart : <<inherit>>
Kickstart Metadata : {}
Management Classes : []
Name Servers : []
Name Servers Search Path : []
Netboot Enabled : True
Owners : ['admin']
Power Management Address :
Power ID :
Power Password :
Power Management Type : ipmitool
Power Username :
Profile : SL6.0-x86_64
Red Hat Management Key : <<inherit>>
Red Hat Management Server : <<inherit>>
Server Override : <<inherit>>
Template Files : {}
Virt Auto Boot : <<inherit>>
Virt CPUs : <<inherit>>
Virt File Size(GB) : <<inherit>>
Virt Path : <<inherit>>
Virt RAM (MB) : <<inherit>>
Virt Type : <<inherit>>
今回のケースでは
- 仮想母艦機にbr0というネットワークブリッジが作成されており母艦機のeth0経由で外と通信を行っているので、それをVMのeth0に割り当てる
- virbr0というKVMの内部ネットワークがあるので、それをVMのeth1に割り当てる
- 仮想CPUは2個
- VMのディスクのサイズを16GBに
- コンソール上でインストール状況の確認が行えるように、カーネルに渡すパラメータを追加
- 専用のkickstartファイルを準備して指定(/var/lib/cobbler/kickstarts/SL6.0-x86_64-template.ks)
というカスタマイズの為、cobblerコマンドでsystemの情報を変更・追加します。
sudo cobbler system edit --name=SL6.0-x86_64-template --interface=eth0 --virt-bridge=br0
sudo cobbler system edit --name=SL6.0-x86_64-template --interface=eth1 --virt-bridge=virbr0
sudo cobbler system edit --name=SL6.0-x86_64-template --virt-cpus=2 --virt-file-size=16
sudo cobbler system edit --name=SL6.0-x86_64-template --kopts="serial console=ttyS0,115200" --kopts-post="console=ttyS0,115200"
sudo cobbler system edit --name=SL6.0-x86_64-template --kickstart=/var/lib/cobbler/kickstarts/SL6.0-x86_64-template.ks
用意したkickstartファイルはdefaultのものをちょこっといじっただけです。
--- /var/lib/cobbler/kickstarts/sample.ks 2010-12-09 12:36:41.000000000 +0900
+++ /var/lib/cobbler/kickstarts/SL6.0-x86_64-template.ks 2011-07-06 18:54:39.000000000 +0900
@@ -2,17 +2,18 @@
# System authorization information
auth --useshadow --enablemd5
# System bootloader configuration
-bootloader --location=mbr
+#bootloader --location=mbr
+bootloader --location=mbr --append="console=tty0 console=ttyS0,115200"
# Partition clearing information
clearpart --all --initlabel
# Use text mode install
text
# Firewall configuration
-firewall --enabled
+firewall --disabled
# Run the Setup Agent on first boot
firstboot --disable
# System keyboard
-keyboard us
+keyboard jp106
# System language
lang en_US
# Use network installation
@@ -31,7 +32,7 @@
# Do not configure the X Window System
skipx
# System timezone
-timezone America/New_York
+timezone Asia/Tokyo
# Install OS instead of upgrade
install
# Clear the Master Boot Record
コマンド実行後のsystemの情報は以下のようになります。
sudo cobbler system report --name SL6.0-x86_64-template
Name : SL6.0-x86_64-template
Comment :
Gateway :
Hostname :
Image :
Kernel Options : {'serial': '~', 'console': 'ttyS0,115200'}
Kernel Options (Post Install) : {'console': 'ttyS0,115200'}
Kickstart : /var/lib/cobbler/kickstarts/SL6.0-x86_64-template.ks
Kickstart Metadata : {}
Management Classes : []
Name Servers : []
Name Servers Search Path : []
Netboot Enabled : True
Owners : ['admin']
Power Management Address :
Power ID :
Power Password :
Power Management Type : ipmitool
Power Username :
Profile : SL6.0-x86_64
Red Hat Management Key : <<inherit>>
Red Hat Management Server : <<inherit>>
Server Override : <<inherit>>
Template Files : {}
Virt Auto Boot : <<inherit>>
Virt CPUs : 2
Virt File Size(GB) : 16
Virt Path : <<inherit>>
Virt RAM (MB) : <<inherit>>
Virt Type : <<inherit>>
Interface ===== : eth0
Bonding Mode :
Bonding Master :
Bonding Opts :
DHCP Tag :
DNS Name :
IP Address :
MAC Address :
Static : False
Static Routes : []
Subnet :
Virt Bridge : br0
Interface ===== : eth1
Bonding Mode :
Bonding Master :
Bonding Opts :
DHCP Tag :
DNS Name :
IP Address :
MAC Address :
Static : False
Static Routes : []
Subnet :
Virt Bridge : virbr0
KoanでVMを作成
準備が整ったので、KoanでKVMなVMを作成します。Cobblerサーバーであるlocalホストと、登録したsystemを指定して、sl6test01.tnmt.localというVMを作成します。
sudo koan --server localhost --virt --system=SL6.0-x86_64-template --virt-name=sl6test01.tnmt.local
- looking for Cobbler at http://localhost/cobbler_api
- reading URL: http://192.168.XXX.20/cblr/svc/op/ks/system/SL6.0-x86_64-templateinstall_tree: http://192.168.XXX.20/cblr/links/SL6.0-x86_64
libvirtd (pid 2656) is running...
- using qemu hypervisor, type=kvm
Wed, 06 Jul 2011 21:57:42 DEBUG No conn passed to Guest, opening URI 'qemu:///system'
Wed, 06 Jul 2011 21:57:43 DEBUG DistroInstaller location is a network source.
libvir: QEMU error : Domain not found: no domain with matching name 'sl6test01.tnmt.local'
- adding disk: /var/lib/libvirt/images//sl6test01.tnmt.local-disk0 of size 16
libvir: QEMU error : Domain not found: no domain with matching uuid '0409ba61-bfb5-8663-95f1-65398562d343'
Wed, 06 Jul 2011 21:57:44 DEBUG Attempting to detect distro:
Wed, 06 Jul 2011 21:57:44 DEBUG Fetching URI: http://192.168.XXX.20/cblr/links/SL6.0-x86_64/.treeinfo
Wed, 06 Jul 2011 21:57:44 DEBUG Saved file to /var/lib/libvirt/boot/virtinst-.treeinfo.EwvpV8
Wed, 06 Jul 2011 21:57:44 DEBUG Fetching URI: http://192.168.XXX.20/cblr/links/SL6.0-x86_64/images/pxeboot/vmlinuz
Wed, 06 Jul 2011 21:57:45 DEBUG Saved file to /var/lib/libvirt/boot/virtinst-vmlinuz.JYd23x
Wed, 06 Jul 2011 21:57:45 DEBUG Fetching URI: http://192.168.XXX.20/cblr/links/SL6.0-x86_64/images/pxeboot/initrd.img
Wed, 06 Jul 2011 21:58:03 DEBUG Saved file to /var/lib/libvirt/boot/virtinst-initrd.img.mYTNuO
libvir: QEMU error : Domain not found: no domain with matching name 'sl6test01.tnmt.local'
Wed, 06 Jul 2011 21:58:04 DEBUG Creating guest from:
...
(VMの設定XMLダンプ)
...
メッセージ後VM作成とOSインストールが開始されます。キックスタートファイルがあるのでCUIによるメニュー選択の必要はありません。
インストール状況はvirsh consoleで確認します。
sudo virsh console sl6test01.tnmt.local
自動的にインストールが完了すると、作成されたVMはシャットダウン状態になります。
あとは virsh start でVMを起動して、rootユーザでキックスタートデフォルトのパスワード"cobbler"でログインが行えます。
その他
今回の例だと、作成されたVMのホスト名はlocalhost.localdomain, IPもDHCPから割り振られたものになりますが、適宜 cobbler の system 情報と、対応する kickstart ファイルのカスタマイズを行うことで、設定値の異なるVMを柔軟に作成出来るようになります。
Cobblerでの準備などは色々ありましたが、一度設定が済めばあとはKoanでVMをサクサク増やせるので、色々な検証にももってこいです。