PXEブート〜Puppetマスターの環境設定メモ

★HAクラスタを想定した設定で、共有するディスクのパスは「/SHARE/data/」とする

■TFTPサーバの設定
1.TFTPサーバのインストール確認

[root@ha-01 ~]# rpm -qa | grep tftp
tftp-server-0.49-2.el5.centos
[root@ha-01 ~]#

2.tftpの設定

[root@ha-01 ~]# cat /etc/xinetd.d/tftp
service tftp
{
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /SHARE/data/tftpboot
        disable                 = no
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}
[root@ha-01 ~]#

DHCPサーバの設定
3.DHCPサーバのインストール確認

[root@ha-01 ~]# rpm -qa | grep dhcp | grep -v client
dhcp-3.0.5-23.el5_5.2
[root@ha-01 ~]#

4.dhcpd.confの設定

[root@ha-01 ~]# cat /etc/dhcpd.conf
ddns-update-style none;
ignore client-updates;

subnet 192.168.11.0 netmask 255.255.255.0 {

        option routers                  192.168.11.1;
        option subnet-mask              255.255.255.0;
        filename                        "/pxeboot/pxelinux.0";
        next-server                     192.168.11.101;
        range dynamic-bootp 192.168.11.150 192.168.11.254;
        default-lease-time 21600;
        max-lease-time 43200;
}
[root@ha-01 ~]#

HTTPDの設定
5.httpdインストール確認

[root@ha-01 ~]# rpm -qa | grep httpd
httpd-2.2.3-45.el5.centos
[root@ha-01 ~]#

6.httpd.confで指定されるドキュメントルートを、共有するディスクのパスへ変更

[root@ha-01 ~]# sed -i 's%/var/www/html%/SHARE/data/netinst%' /etc/httpd/conf/httpd.conf

■OSメディアのマウントと配置
7.CentOSメディア配置ディレクトリの作成とコピー

[root@ha-01 ~]# mkdir -p /SHARE/data/netinst/centos5.6-server-x86_64

[root@ha-01 ~]# mount -t iso9660 -o ro  /dev/cdrom  /mnt

[root@ha-01 ~]# cp -a /mnt/* /SHARE/data/netinst/centos5.6-server-x86_64/

[root@ha-01 ~]# umount /mnt

■Puppetクライアント用の資材配置とYUMリポジトリの作成
8.Puppet関連パッケージ配置ディレクトリの作成

[root@ha-01 ~]# mkdir -p /SHARE/data/netinst/puppet_setup

9.Puppet関連パッケージを配置

[root@ha-01 ~]# ll /SHARE/data/netinst/puppet_setup
合計 1256
-rw-r--r-- 1 root root 336912  7月 26 01:28 augeas-libs-0.8.1-2.el5.x86_64.rpm
-rw-r--r-- 1 root root  62594  7月 26 01:27 facter-1.5.9-1.el5.noarch.rpm
-rw-r--r-- 1 root root 803124  7月 26 01:27 puppet-0.25.5-1.el5.noarch.rpm
-rw-r--r-- 1 root root  21808  7月 26 01:27 puppet-server-0.25.5-1.el5.noarch.rpm
-rw-r--r-- 1 root root  21440  7月 26 01:29 ruby-augeas-0.4.1-1.el5.x86_64.rpm
-rw-r--r-- 1 root root   9856  7月 26 01:29 ruby-shadow-1.4.1-7.el5.x86_64.rpm
[root@ha-01 ~]#

10.YUMリポジトリの作成

[root@ha-01 ~]# createrepo -v /SHARE/data/netinst/puppet_setup/

PXEブート時に使用する各ファイルを配置
11.ブートローダ、vmlinuz、initrdを配置

[root@ha-01 ~]# cp -p /usr/lib/syslinux/pxelinux.0 /SHARE/data/tftpboot/pxeboot/

[root@ha-01 ~]# cp -a /SHARE/data/netinst/centos5.6-server-x86_64/images/pxeboot/vmlinuz \
/SHARE/data/tftpboot/pxeboot/

[root@ha-01 ~]# cp -a /SHARE/data/netinst/centos5.6-server-x86_64/images/pxeboot/initrd.img \
/SHARE/data/tftpboot/pxeboot/

12.PXEブート設定ファイルを作成

[root@ha-01 ~]# mkdir -p /SHARE/data/tftpboot/pxeboot/pxelinux.cfg
[root@ha-01 ~]# cat /SHARE/data/tftpboot/pxeboot/pxelinux.cfg/default
prompt 0
timeout 20

default hadoop
label hadoop
  kernel vmlinuz
  append initrd=initrd.img ks=http://192.168.11.101/ks/ha-slave1.ks ksdevice=bootif
  IPAPPEND 2
[root@ha-01 ~]#

kickstartファイルの配置とPuppetクライアント用のhosts配置
13.kickstartファイルを作成

[root@ha-01 ~]# mkdir -p /SHARE/data/netinst/ks
[root@ha-01 ~]# cat /SHARE/data/netinst/ks/ha-slave1.ks
install
text
url --url http://192.168.11.101/centos5.6-server-x86_64
lang ja_JP.UTF-8
keyboard jp106
network --bootproto=static --ip=192.168.11.105 --gateway=192.168.11.1 --netmask=255.255.255.0 --hostname=ha-slave1 --onboot=yes
rootpw abcdefg
firewall --disabled
authconfig --enableshadow --enablemd5
selinux --disabled
timezone Asia/Tokyo
reboot

bootloader --location=mbr --driveorder=vda
clearpart --all --initlabel --drives=vda
part /boot --fstype ext3 --size=512 --ondisk=vda
part pv.1 --size=0 --grow --ondisk=vda
volgroup vg00 pv.1
logvol /        --fstype ext3   --name=lv00     --vgname=vg00   --size=8192     --grow
logvol swap                     --name=lv01     --vgname=vg00   --size=1024
logvol /log     --fstype ext3   --name=lv02     --vgname=vg00   --size=1024
logvol /var     --fstype ext3   --name=lv03     --vgname=vg00   --size=5120
logvol /home    --fstype ext3   --name=lv04     --vgname=vg00   --size=5120


%packages
@development-libs
@editors
@system-tools
@japanese-support
@text-internet
@core
@base
@base-x
@ruby
@admin-tools
@development-tools
@graphical-internet

%post --log=/root/kickstart-post.log


mv /etc/hosts /etc/hosts.org
/usr/bin/wget -o /dev/null -P /etc http://192.168.11.101/hosts

test -f /etc/yum.repos.d/CentOS-Base.repo && /bin/mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.old

cat << EOF > /etc/yum.repos.d/custum.repo
[diskimage]
name=install image
baseurl=http://192.168.11.101/centos5.6-server-x86_64
enabled=1
gpgcheck=0

[puppet_setup]
name=additional packages
baseurl=http://192.168.11.101/puppet_setup
enabled=1
gpgcheck=0

EOF

yum clean all

/usr/bin/yum -y install puppet

cat << EOF > /etc/puppet/namespaceauth.conf
[puppetmaster]
    allow *

[puppetd]
    allow *

[puppetmaster]
    allow *

[fileserver]
    allow *

EOF

cat << 'EOF' > /etc/puppet/puppet.conf
[main]
    vardir = /var/lib/puppet
    logdir = /var/log/puppet
    rundir = /var/run/puppet
    ssldir = \$vardir/ssl

[puppetd]
    certname = ha-slave1
EOF

/usr/sbin/ntpdate ntpサーバ

export RUBYLIB=/var/lib/puppet/lib ; puppetd --no-daemonize --onetime --verbose --server ha-server
[root@ha-01 ~]#

14.Pupppetクライアント用のhostsを配置

[root@ha-01 ~]# cp /etc/hosts /SHARE/data/netinst/

■Puppetマスターの設定
15.Puppet関連パッケージのインストール確認

[root@ha-01 puppet_setup]# rpm -qa | grep -e augeas-libs-0.8.1-2.el5 -e ruby-augeas-0.4.1-1.el5 \
-e ruby-shadow-1.4.1-7.el5 -e facter-1.5.9-1.el5 -e puppet-0.25.5-1.el5 -e puppet-server-0.25.5-1.el5
augeas-libs-0.8.1-2.el5
facter-1.5.9-1.el5
ruby-shadow-1.4.1-7.el5
ruby-augeas-0.4.1-1.el5
puppet-server-0.25.5-1.el5
puppet-0.25.5-1.el5
[root@ha-01 puppet_setup]#

16.Puppetで使用されるSSL関連ディレクトリを作成

[root@ha-01 data]# mkdir -p /SHARE/data/puppet_ssl

17.Puppet各種ファイルを設定

[root@ha-01 ~]# cat /etc/puppet/puppet.conf
[main]
    vardir = /var/lib/puppet
    logdir = /var/log/puppet
    rundir = /var/run/puppet
    ssldir = /SHARE/data/puppet_ssl

[puppetmasterd]
    autosign = true
    certname = ha-server

[puppetd]
    certname = ha-01
[root@ha-01 ~]#
[root@ha-01 ~]# cat /etc/puppet/namespaceauth.conf
[puppetmaster]
    allow *

[puppetd]
    allow *

[puppetrunner]
    allow *

[fileserver]
    allow *
[root@ha-01 ~]#
[root@ha-01 ~]# cat /etc/puppet/autosign.conf
*
[root@ha-01 ~]#

★各環境に合わせてPuppetマニフェストを用意すれば準備OK