Cobbler+KoanでScientific Linux 6.0なKVMのVMをコマンド一発で作成する

cobbler 2011-07-06

エンジニアは七夕までに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をサクサク増やせるので、色々な検証にももってこいです。

Tags

Shinya Tsunematsu

a Software Engineer loves tech, curry, music, fitness.

Great! You've successfully subscribed.
Great! Next, complete checkout for full access.
Welcome back! You've successfully signed in.
Success! Your account is fully activated, you now have access to all content.