2008/02/04

DRACでリモートからCentOS 5.1をAnaconda Kickstartで完全自動PXEインストール・その2

URL http://Repository.LocalDomain/centos/5.1/Dom0-ks.cfgに置くAnaconda Kickstartの設定ファイルの内容について解説する。当然、インストール条件によって内容を変える必要がある。今回は、以下の機能を盛り込んだ。
  • VLAN
  • Xen
  • RHCS(luci&ricci、仮想マシンフェンス)
  • DELL OpenManage
OSインストール後の設定は、%postセクションに、シェルスクリプトとして記述する(--interpreterオプションでスクリプト言語を変更することもできる)
ただし、ファイルを新規に生成する場合には注意が必要。SELinuxのファイルコンテキストを、restoreconコマンド等で調整する必要があるかもしれない。ファイル内容の変更にpatchコマンドを使う場合も、結果的に新規にファイルを生成することになるので注意する。

Dom0-ks.cfgの内容は以下の通り。
logging --host=192.168.55.32

text
install
url --url http://Repository.LocalDomain/centos/5/os/i386
lang en_US.UTF-8
keyboard jp106
monitor --monitor="LCD Panel 1024x768"
xconfig --startxonboot --driver ati --resolution 1024x768 --depth 24
network --device eth0 --bootproto static --ip 192.168.55.31 --netmask 255.255.255.0 --gateway 192.168.55.35 --nameserver 192.168.55.33,192.168.55.34 --hostname Dom0.LocalDomain
network --device eth1 --onboot no --bootproto dhcp --hostname Dom0.LocalDomain
rootpw --iscrypted $1$zthPniQJ$u8VAa0oCtLcKrpfk/WIjs0
user --name USERNAME --homedir /home/USERNAME --iscrypted --password=$1$DCVowOrU$N86i3KrFg2yftOqtXMB3w/ --shell=/bin/bash --groups=USERNAME,wheel
firewall --enabled --port=22:tcp
authconfig --enableshadow --enablemd5
selinux --permissive
timezone --utc Asia/Tokyo
bootloader --location=mbr --driveorder=sda --append="xencons=tty"

clearpart --all --drives=sda
part /boot --fstype ext3 --size=100 --ondisk=sda
part pv.6 --size=0 --grow --ondisk=sda
volgroup VolGroupXX --pesize=32768 pv.6
logvol swap --fstype swap --name=LogVol01 --vgname=VolGroupXX --size=1984
logvol / --fstype ext3 --name=LogVol00 --vgname=VolGroupXX --size=10240

repo --name=base --baseurl=http://Repository.LocalDomain/centos/5/os/i386/
repo --name=updates --baseurl=http://Repository.LocalDomain/centos/5/updates/i386/
repo --name=addons --baseurl=http://Repository.LocalDomain/centos/5/addons/i386/
repo --name=extras --baseurl=http://Repository.LocalDomain/centos/5/extras/i386/

services --enabled=oddjobd,ntpd --disabled=avahi-daemon,cpuspeed,cups,nfslock,pcscd,smartd,yum-updatesd

reboot

%packages
@admin-tools
@base
@base-x
@cluster-storage
@clustering
@core
@dns-server
@editors
@emacs
@ftp-server
@gnome-desktop
@graphical-internet
@japanese-support
@legacy-network-server
@mail-server
@network-server
@ruby
@server-cfg
@system-tools
@text-internet
@virtualization
@web-server
lynx
tftp
-kernel
kernel-xen
-kmod-gfs
kmod-gfs-xen
-kmod-gfs
kmod-gnbd-xen
-NetworkManager
-bluez-utils
device-mapper-multipath
-irda-utils
-pcmciautils
net-snmp-utils
net-snmp-libs
net-snmp
OpenIPMI
OpenIPMI-libs
openhpi
-squid


%post --log=/mnt/sysimage/root/anaconda-post.log --erroronfail
function log_mesg() {
/bin/echo
/bin/echo %POST: $*
}

log_mesg "BEGIN %POST SCRIPT"

/bin/cp /tmp/ks-script-* /root

### network
log_mesg "network"
echo 'NOZEROCONF=yes' >> /etc/sysconfig/network

### logrotate
log_mesg "logrotate"
cat > /etc/logrotate.d/00local.conf <<EOL
rotate 20
compress
start 100
EOL

### local yum repository
log_mesg "local yum repository"
/bin/mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.dist
/bin/cat /etc/yum.repos.d/CentOS-Base.repo.dist | /bin/sed 's/mirrorlist=/#mirrorlist=/
s/#baseurl=/baseurl=/
s/mirror.centos.org/Repository.LocalDomain/' > /etc/yum.repos.d/CentOS-Base.repo

### sshd
log_mesg "sshd"
/usr/bin/patch /etc/ssh/sshd_config <<EOL
39a40
> PermitRootLogin no
60c61
< PasswordAuthentication yes
---
> PasswordAuthentication no
EOL
/sbin/restorecon /etc/ssh/sshd_config

##### for User USERNAME
log_mesg "sshd/User USERNAME"
/bin/mkdir ~USERNAME/.ssh
/bin/chmod 700 ~USERNAME/.ssh
/bin/cat > ~USERNAME/.ssh/authorized_keys2 <<EOL
ssh-dss AAAA<<略>>rQ== someuser1@somehost1
ssh-dss AAAA<<略>>achN someuser2@somehost2
EOL
/bin/chmod 644 ~USERNAME/.ssh/authorized_keys2
/bin/chown -R USERNAME.USERNAME ~USERNAME/.ssh

### DELL OpenManage
log_mesg "DELL OpenManage"
log_mesg "DELL OpenManage/WGET"
/usr/bin/wget -q -O - http://linux.dell.com/repo/hardware/bootstrap.cgi | bash
/usr/bin/wget -q -O - http://linux.dell.com/repo/software/bootstrap.cgi | bash
/usr/bin/wget -q -O - http://linux.dell.com/repo/firmware/bootstrap.cgi | bash
log_mesg "DELL OpenManage/yum #1"
/usr/bin/yum install -y srvadmin-all
log_mesg "DELL OpenManage/yum #2"
/usr/bin/yum install -y $(/usr/bin/inventory_firmware -b)
log_mesg "DELL OpenManage/update_firmware"
/usr/bin/update_firmware

### Mail
log_mesg "mail"
##### /etc/mail/sendmail.cf
log_mesg "mail/sendmail.cf"
/usr/bin/patch /etc/mail/sendmail.mc <<EOL
26c26
< dnl define(\`SMART_HOST', \`smtp.your.provider')dnl
---
> define(\`SMART_HOST', \`SmtpServer.LocalDomain')dnl
EOL
(cd /etc/mail; /usr/bin/make sendmail.cf)
/sbin/restorecon /etc/mail/sendmail.cf

##### /etc/aliases
log_mesg "mail/aliases"
/usr/bin/patch /etc/aliases <<EOL
96c96
< #root: marc
---
> root: root@LocalDomain
EOL
/usr/bin/newaliases
/sbin/restorecon /etc/aliases

### SNMP
log_mesg "SNMP"
cat > /etc/snmp/snmpd.conf <<EOL
com2sec localhost localhost COMMUNITY_STRING
com2sec localnet 192.168.55.0/24 COMMUNITY_STRING

group gOpLocalhost v1 localhost
group gOpLocalhost v2c localhost
group gOpLocalnet v1 localnet
group gOpLocalnet v2c localnet

view all included .1
view vDell included .1.3.6.1.4.1.674.10892.1
view systemview included REDHAT-CLUSTER-MIB:RedHatCluster

access gOpLocalhost "" any noauth exact all vDell all
access gOpLocalnet "" any noauth exact all none all

syslocation Unknown
syscontact root@LocalDomain

disk / 100000

load 10

# for DELL
smuxpeer .1.3.6.1.4.1.674.10892.1

# for cluster
dlmod RedHatCluster /usr/lib/cluster-snmp/libClusterMonitorSnmp.so
EOL

cat > /etc/snmp/snmp.conf <<EOL
mibdirs +/opt/dell/srvadmin/omsa/mibs:/opt/dell/srvadmin/rac5/mibs:/opt/dell/srvadmin/rac3/mibs:/opt/dell/srvadmin/sm/mibs:/opt/dell/srvadmin/rac4/mibs
mibs +MIB-Dell-10892:DCS3FRU-MIB:DCS3RMT-MIB:DCS3RMT-MIB:StorageManagement-MIB:DCS3RMT-MIB:REDHAT-MIB:REDHAT-CLUSTER-MIB
EOL

##### iptables
log_mesg "iptables"
/bin/cat > /etc/sysconfig/iptables <<EOL
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -s 192.168.55.0/24 -i eth0.4000 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 123 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
EOL

### For Cluster
log_mesg "cluster"
##### /etc/lvm/lvm.conf
log_mesg "cluster/lvm.conf"
/bin/cp -p /etc/lvm/lvm.conf /etc/lvm/lvm.conf.dist
/bin/sed 's/locking_type = 1/locking_type = 3/' < /etc/lvm/lvm.conf.dist > /etc/lvm/lvm.conf

##### /etc/cluster/fence_xvm.key
log_mesg "cluster/fence_xvm.key"
/usr/bin/base64 -di > /etc/cluster/fence_xvm.key <<EOL
FiAuM5lLTfCoom3BIrNrWKXj2eObJkK1AYcg4g9uu+r8kDPl8uZaxva6KhteDOtAMXY62DCvW/3/
<<略>>
IDI+IC9kZXYvbnVsbCB8IGdyZXAgLXEgIkRvbWFpbi0wIiB8fCByZXR1cm4gMQo=
EOL
/sbin/restorecon /etc/init.d/cman

### X fonts FOR racvnc
/bin/mkdir /usr/X11R6/lib
/bin/ln -s /usr/share/X11 /usr/X11R6/lib

### /etc/inittab
log_mesg "inittab"
/usr/bin/patch /etc/inittab <<EOL
32c32,33
< ca::ctrlaltdel:/sbin/shutdown -t3 -r now
---
> #ca::ctrlaltdel:/sbin/shutdown -t3 -r now
> ca::ctrlaltdel:ca::ctrlaltdel:/usr/bin/logger 'CTRL-ALT-DELETE trap is disabled'
EOL
/sbin/restorecon /etc/inittab

### GDM
log_mesg "GDM"
/usr/bin/patch /etc/gdm/custom.conf <<EOL
50a51
> SystemMenu=false
EOL
/sbin/restorecon /etc/gdm/custom.conf

### grub
log_mesg "grub"
/bin/cp -p /boot/grub/grub.conf /boot/grub/grub.conf.orig
/bin/sed 's/ rhgb quiet//' < /boot/grub/grub.conf.orig > /boot/grub/grub.conf

### /etc/bashrc
log_mesg "bashrc"
/bin/cp -p /etc/bashrc /etc/bashrc.dist
/bin/sed 's/xterm\*)/xterm*|vt100*)/' < /etc/bashrc.dist > /etc/bashrc

log_mesg "END %POST SCRIPT"
次回は、実際のインストール作業を解説する(スナップショット画面付)。

DRACでリモートからCentOS 5.1をAnaconda Kickstartで完全自動PXEインストール・その1
DRACでリモートからCentOS 5.1をAnaconda Kickstartで完全自動PXEインストール・その2
DRACでリモートからCentOS 5.1をAnaconda Kickstartで完全自動PXEインストール・その3

0 件のコメント: