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さんのCobblerKoanKVM 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をサクサク増やせるので、色々な検証にももってこいです。