星期二, 一月 23, 2007

Red Hat kickstart

使用 Red Hat 作为生产系统,则应该利用 kickstart 提供的自动化安装和定制功能来提高装机的效率,并且可以减小企业环境中软件环境的不一致所造成的重复。一个 ks 配置文件如下:
# Kickstart file automatically generated by anaconda.

install
url --url ftp://192.168.0.98/pub/
lang en_US.UTF-8
langsupport --default=en_US.UTF-8 en_US.UTF-8 zh_CN.UTF-8 zh_TW.UTF-8
keyboard us
xconfig --card "ATI Rage XL" --videoram 8128 --hsync 30-61 --vsync 50-120 --resolution 800x600 --depth 16 --startxonboot --defaultdesktop kde
# network --device eth0 --bootproto dhcp
network --device eth0 static --ip 192.168.0.99 --netmask 255.255.255.0 --gateway 192.168.0.1 --nameserver 192.168.0.230 --hostname shopex
network --device eth1 --bootproto dhcp
rootpw --iscrypted $1$ntYDkgk/$AY.RmHTCjLUFJWzHlPYfF1
firewall --enabled --port=22:tcp --port=80:tcp
selinux --disabled
authconfig --enableshadow --enablemd5
timezone Asia/Shanghai
bootloader --location=mbr
# The following is the partition information you requested
# Note that any partitions you deleted are not expressed
# here so unless you clear all partitions first, this is
# not guaranteed to work
clearpart --all --drives=sda
part /boot --fstype ext3 --size=100 --ondisk=sda
part pv.5 --size=0 --grow --ondisk=sda
volgroup VolGroup00 --pesize=32768 pv.5
logvol swap --fstype swap --name=LogVol01 --vgname=VolGroup00 --size=1000 --grow --maxsize=2000
logvol / --fstype ext3 --name=LogVol00 --vgname=VolGroup00 --size=1024 --grow

%packages
@ editors
@ emacs
@ text-internet
@ dialup
@ compat-arch-support
@ chinese-support
@ development-tools
grub
kernel-smp
kernel-smp-devel
kernel-devel
e2fsprogs
lvm2
subversion
ntp
samba-common
samba-client
vsftpd

%post --interpreter /bin/bash
PKGSTORE=192.168.0.98
cd /opt
wget ftp://$PKGSTORE/pub/linux-2.6.14.2.tar.bz2 \
&& tar xfj linux-2.6.14.2.tar.bz2 \
&& cd linux-2.6.14.2 \
&& wget ftp://$PKGSTORE/pub/config-2.6.14.2.SMP -O ./.config \
&& make oldconfig \
&& make \
&& make modules \
&& make modules_install \
&& cp -vbf arch/i386/boot/bzImage /boot/vmlinuz-2.6.14.2.SMP \
&& cp -vf System.map /boot/System.map-2.6.14.2.SMP \
&& cp -vbf .config /boot/config-2.6.14.2.SMP \
&& mkinitrd -v -f /boot/initrd-2.6.14.2.SMP.img 2.6.14.2 \
&& /sbin/depmod -ae -F System.map 2.6.14.2 \
&& echo -e "title Red Hat Linux AS4 (2.6.14.2.SMP)
\troot (hd0,0)
\tkernel /vmlinuz-2.6.14.2.SMP ro root=/dev/VolGroup00/LogVol00
\tinitrd /initrd-2.6.14.2.SMP.img" >>/boot/grub/grub.conf \
&& sed -i "s/default=0/default=2/" /boot/grub/grub.conf
cd ..
sed -i 's/id:5:initdefault:/id:3:initdefault:/' /etc/inittab
wget ftp://$PKGSTORE/pub/trun-off.list
for SERVICE in `cat turn-off.list`
do
/sbin/chkconfig $SERVICE off
done
这样,通过在 %package 部分定制需要的包,在 %post 部分运行需要的命令(这里是给内核升级并关闭一些服务,因为原来的 2.6.9-SMP 内核有问题,不能正常重启),可以勉强达到对软件环境的定制和复用需求。

在这个例子里,kickstart 的配置文件和所有的安装包以及其他辅助文件都放置在 ftp 服务器上:
ftp://192.168.0.98/pub/ks/base-baode_36G.ks
ftp://192.168.0.98/pub/ks/turn-off.list
ftp://192.168.0.98/pub/config-2.6.14.2.SMP
ftp://192.168.0.98/pub/linux-2.6.14.2.tar.bz2
ftp://192.168.0.98/pub/RedHat
注意安装树 ftp://192.168.0.98/pub/RedHat/RPMS 应该包含了所有需要的 rpm 包,可以将4张光盘的所有的 RPMS 下的 rpm 文件都拷贝到这里面,而在 ks 文件中只需指定 url --url ftp://192.168.0.98/pub/。

然后在需要安装的主机上运行安装光盘,在 boot: 下键入:
boot: linux ks=ftp://192.168.0.98/pub/ks/base-baode_36G.ks text
安装程序会询问你使用哪个网络接口,保证网线正确连通了之后,选择正确的接口,以后的东西都会自动完成了。

针对不同的系统制作不同的 ks 文件,可以的得到不同的定制环境。然后正确的作法应该是,利用 DHCP 和 tftp 来实现 PXE 的自动安装,通过 PXE 启动 grub,在菜单中选择需要的安装项目,可以得到更好的自动化实现。

服务器安装完毕之后,有一些内容需要检查一下,最主要的是:
1. 服务器是否能够正确的启动、关闭和重启
2. 服务器的 22 号端口是否能够正常访问,并能够 su - 到 root 帐号

没有评论: