Cobbler

ネットワークインストール環境がさくっと構築できる Cobbler がおもしろそうなので触ってみたメモ。参考にしたサイトは以下の通り。

以下、Fedora 7 で Cobbler を動かしてみたメモ。

インストール

yum で一発インストール。

$ sudo yum install cobbler

設定

cobbler check コマンドを実行すると、見直すべき設定ポイントを教えてくれる。親切。

$ sudo cobbler check
The following potential problems were detected:
#0: The 'server' field in /var/lib/cobbler/settings must be set to something other than localhost, or kickstarting features will not work.  This should be a resolvable hostname or IP for the boot server as reachable by all machines that will use it.
#1: For PXE to be functional, the 'next_server' field in /var/lib/cobbler/settings must be set to something other than 127.0.0.1, and should match the IP of the boot server on the PXE network.
#2: service cobblerd is not running
#3: syslinux should be installed but is not, expecting to find something at /usr/lib/syslinux/pxelinux.0
#4: service xinetd is not running
#5: change 'disable' to 'no' in /etc/xinetd.d/tftp
#6: service httpd is not running
#7: since iptables may be running, ensure 69, 80, 25150, and 25151 are unblocked#8: reposync is not installed, need for cobbler reposync, install/upgrade yum-utils?
#9: yumdownloader is not installed, needed for cobbler repo add with --rpm-list
parameter, install/upgrade yum-utils? 

これを元に設定変更を行っていく。まずは /var/lib/cobbler/settings を以下のように修正。

manage_dhcp: 1
next_server: '192.168.10.12'
server: 192.168.10.12

192.168.10.12 は Cobbler が動いているマシンの IP アドレス。

cobblerd を起動。

$ sudo /sbin/chkconfig cobblerd on 
$ sudo /etc/init.d/cobblerd start 

syslinux をインストール。

$ sudo yum install syslinux

tftpd と xinetd を起動。

$ sudo /sbin/chkconfig tftp on
$ sudo /sbin/chkconfig xinetd on 
$ sudo /etc/init.d/xinetd start 

httpd を起動。

$ sudo /sbin/chkconfig httpd on
$ sudo /etc/init.d/httpd start 

iptables はとりあえずオフにしとく。

$ sudo /sbin/chkconfig iptables off
$ sudo /etc/init.d/iptables stop 

yum-utils のインストール。

$ sudo yum install yum-utils

/etc/cobbler/dhcp.template を以下のような感じで修正。

# ******************************************************************
# Cobbler managed dhcpd.conf file
#
# generated from cobbler dhcp.conf template ($date)
#
# ******************************************************************

ddns-update-style interim;

allow booting;
allow bootp;

ignore client-updates;
set vendorclass = option vendor-class-identifier;

subnet 192.168.10.0 netmask 255.255.255.0 {
     option routers          192.168.10.1;
     option subnet-mask      255.255.255.0;
     range dynamic-bootp     192.168.10.100 192.168.10.254;
     filename                "/pxelinux.0";
     default-lease-time      21600;
     max-lease-time          43200;
     next-server             $next_server;
}

$insert_cobbler_system_definitions

dhcp をインストールしておく。dhcpd はこの段階では起動しなくていい。(起動してもエラーになる。)

$ sudo yum install dhcp
$ sudo /sbin/chkconfig dhcpd on

ネットワークインストールに必要なファイルの用意

インストールイメージとか、キックスタートファイルとかを作成。

$ sudo cobbler import --path=rsync://ftp.jaist.ac.jp/pub/Linux/Fedora/releases/7/Fedora/i386/os --name=f7

このコマンド一発で必要なものを全部つくってくれる。超簡単。時間はかかるけど。

cobbler report を実行すると、どこにどんなファイルがあるかとかを表示してくれる。

$ sudo cobbler report
distro          : f7-i386
kernel          : /var/www/cobbler/ks_mirror/f7/images/pxeboot/vmlinuz
initrd          : /var/www/cobbler/ks_mirror/f7/images/pxeboot/initrd.img
kernel options  : {}
architecture    : x86
ks metadata     : {'tree': 'http://@@server@@/cblr/links/f7-i386'}
breed           : redhat

distro          : f7-xen-i386
kernel          : /var/www/cobbler/ks_mirror/f7/images/xen/vmlinuz
initrd          : /var/www/cobbler/ks_mirror/f7/images/xen/initrd.img
kernel options  : {}
architecture    : x86
ks metadata     : {'tree': 'http://@@server@@/cblr/links/f7-xen-i386'}
breed           : redhat

profile         : f7-i386
distro          : f7-i386
kickstart       : /etc/cobbler/kickstart_fc6.ks
kernel options  : {}
ks metadata     : {}
virt file size  : 5
virt ram        : 512
virt type       : auto
virt path       :
virt bridge     : xenbr0
virt cpus       : 1
repos           : []
dhcp tag        : default
server          : <<inherit>>

profile         : f7-xen-i386
distro          : f7-xen-i386
kickstart       : /etc/cobbler/kickstart_fc6.ks
kernel options  : {}
ks metadata     : {}
virt file size  : 5
virt ram        : 512
virt type       : auto
virt path       :
virt bridge     : xenbr0
virt cpus       : 1
repos           : []
dhcp tag        : default
server          : <<inherit>>

これを見て分かるとおり、Xen 用のイメージなんかも勝手に作ってくれる。

あとは必要に応じてキックスタートファイル(/etc/cobbler/kickstart_fc6.ks)なんかをいじる。何かファイルを修正したりしたら、cobbler sync を忘れずに実行。

$ sudo cobbler sync

ネットワークインストールを実行する

ここまできたら、別のマシンを PXE ブートで起動して、boot プロンプトで cobbler import で作成したイメージの名前を入力。

boot: f7-i386

あとは勝手にインストールが始まる。

以下のように system 登録しておくと、PXE ブート時にイメージ名を入力しなくても、勝手に割り当てられたイメージでブートしてくれる。

$ sudo cobbler system add --name=test-server --mac=00:0C:29:7E:3A:8B --profile=f7-i386