RHEL5+PXE+DHCP+Apache+Kickstart安裝RHCE5.1 i386實驗室環境

 此博文出自:http://andrewyu.blog.51cto.com/1604432/1100567

 使用RHEL5+PXE+DHCP+Apache+Kickstart安裝RHCE5.1 i386實驗室環境,根據文章內容也可批量安裝了紅帽RHEL系統或CentOS5.x,現階段,由於需要大規模應用CentOS5.8 x86_64系統用於集羣環境,所以將此方法主要用於在公司內網批量安裝新服務器系統,這極大地簡化了用光盤重複安裝CentOS5.8 x86_64的過程,再加上分佈式自動化運維工具puppet進行批量部署,達到了自動化運維的目的,避免了重複性勞動,極大的提高了工作效率。

首先,來介紹一下與之相關的原理和概念。
1. 什麼是PXE
嚴格來說,PXE 並不是一種安裝方式,而是一種引導方式。進行 PXE 安裝的必要條件是在要安裝的計算機中必須包含一個 PXE 支持的網卡(NIC),即網卡中必須要有 PXE Client。PXE (Pre-boot Execution Environment)協議可以使計算機通過網絡啓動。此協議分爲 Client端和 Server 端,而PXE Client則在網卡的 ROM 中。當計算機引導時,BIOS 把 PXE Client 調入內存中執行,然後由 PXE Client 將放置在遠端的文件通過網絡下載到本地運行。運行 PXE 協議需要設置 DHCP 服務器和 TFTP 服務器。DHCP 服務器會給 PXE Client(將要安裝系統的主機)分配一個 IP 地址,由於是給 PXE Client 分配 IP 地址,所以在配置 DHCP 服務器時需要增加相應的 PXE 設置。此外,在 PXE Client 的 ROM 中,已經存在了 TFTP Client,那麼它就可以通過 TFTP 協議到 TFTP Server 上下載所需的文件了。
2. 什麼是Kickstart
Kickstart是一種無人值守的安裝方式。它的工作原理是在安裝過程中記錄典型的需要人工干預填寫的各種參數,並生成一個名爲 ks.cfg的文件。如果在安裝過程中(不只侷限於生成Kickstart安裝文件的機器)出現要填寫參數的情況,安裝程序首先會去查找 Kickstart生成的文件,如果找到合適的參數,就採用所找到的參數;如果沒有找到合適的參數,便需要安裝者手工干預了。所以,如果Kickstart文件涵蓋了安裝過程中可能出現的所有需要填寫的參數,那麼安裝者完全可以只告訴安裝程序從何處取ks.cfg文件,然後就去忙自己的事情。等安裝完畢,安裝程序會根據ks.cfg中的設置重啓系統,並結束安裝。
3. PXE + Kickstart的安裝條件和詳細步驟
執行PXE+Kickstart安裝需要的設備爲:
DHCP 服務器。
TFTP 服務器。
Kickstart所生成的ks.cfg配置文件。
一臺存放系統安裝文件的服務器,如 NFS、HTTP 或 FTP 服務器。
一個帶有 PXE 支持網卡的主機。

系統環境介紹如下:
服務器系統爲CentOS5.6 x86_64IP192.168.11.29(此服務器並非一定要限定爲CentOS5.8 x86_64系統),由於是最小化安裝的,我們在後面要用到system-config-kickstart工具,它必須依賴於X windows,所以我們要提前安裝好X windowsgnome並重啓系統,步驟如下所示:
先裝X windowsGNOME桌面環境,命令如下所示:
yum -y groupinstall 'X Window System'
yum -y groupinstall 'GNOME Desktop Environment'
然後修改/etc/inittab文件並重啓服務器,使其運行在圖形模式下,主要修改文件內容如下所示:
id:5:initdefault:
重啓服務器命令如下:
reboot
完成上述的準備工作後,PXE+DHCP+Apache+Kickstart無人值守安裝CentOS5.8安裝的步驟如下:
1)我們先下載CentOS5.8 x86_64光盤至/usr/local/src下,並掛載至/mnt/cdrom目錄下,並確認系統已安裝好httpd服務,如下:
cd /usr/local/src
wget http://mirror.neu.edu.cn/CentOS/5.8/isos/x86_64/CentOS-5.8-x86_64-bin-DVD-1of2.iso
mkdir –p /mnt/cdrom
接下來我們掛載光盤ISO文件至/mnt/cdrom目錄下,如下命令:
mount -o loop CentOS-5.8-x86_64-bin-DVD-1of2.iso /mnt/cdrom
CetnOS5.x x86_64系列已默認安裝Apache,我們可以用命令看下其版本號,如下所示:
rpm -q httpd
命令顯示結果如下所示:
httpd-2.2.3-65.el5.CentOS
 2)接下來我們複製光盤下的所有內容(文件和文件夾)到/var/html/www(此目錄爲Apache默認DocumentRoot目錄)下,無論是紅帽系統還是CentOS 5.x系統,如果是最小化安裝,基本上第一張DVD光盤文件就夠了,複製命令如下所示:
cp -rf /mnt/cdrom  /var/html/www
3)安裝 tftp-server,並啓用tftp服務,同時啓動xinetd進程,步驟如下所示。
1.我們用命令安裝tftp-server,命令如下:
yum -y install tftp-server
 2.接着修改/etc/xinetd.d/tftp文件,將disable的值由yes變爲no,內容如下所示:
service tftp
{
  socket_type    = dgram
  protocol    = udp
  wait      = yes
  user      = root
  server      = /usr/sbin/in.tftpd
  server_args    = -s /tftpboot
  disable      = no
  per_source    = 11
  cps      = 100 2
  flags      = IPv4
}
3.接着重啓xinetd進程,命令如下所示:
service xinetd restart
 4)配置支持PXE的啓動程序(注意:前面已經將CentOS5.8 x86_64第一張光盤的內容複製到/var/www/html目錄中了,所以需要的文件只需要從/var/www/html目錄中複製就行了)。
a) 建立tftpboot文件夾,如下所示,若該文件夾已經存在則不用建立。
mkdir -p /tftpboot
b) 複製pxelinux.0文件至tftpboot文件夾中,如下所示。
cp /usr/lib/syslinux/pxelinux.0 /tftpboot
c) DVD光盤上的/image/pxeboot/initrd.imgvmlinux複製到/tftpboot/中,如下所示。
cp /var/www/html/images/pxeboot/vmlinuz /tftpboot
d) 複製DVD光盤上的isolinux/*.msg/tftpboot目錄下,如下所示:
cp /var/www/html/isolinux/*.msg /tftpboot/
e) tftpboot中新建一個pxelinux.cfg目錄:
mkdir pxelinux.cfg
f) isolinux目錄中的isolinux.cfg複製到pxelinux.cfg目錄中,同時更改文件名稱爲default,命令如下所示:
cd pxelinux.cfg
cp /var/www/html/isolinux/isolinux.cfg   /tftpboot/pxelinux.cfg/default
g) 在上一個步驟,即第6點中,暫時不要修改default文件,進行到這一步時,雖然已經可以通過網絡來引導並手動安裝Kickstart了,但是由於這裏討論的是無人值守安裝,所以先不修改這個default文件。
5)安裝dhcp服務,同時修改如下配置:
yum –y install dhcp
然後複製配置模板文件到指定的目錄中,並重新命名。
cp /usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample /etc/dhcpd.conf
接着修改/etc/dhcpd.conf配置文件,文件最後修改內容如下所示:
ddns-update-style interim;
ignore client-updates;
next-server 192.168.11.29;
filename "/pxelinux.0";
subnet 192.168.11.0 netmask 255.255.255.0 {
                option routers                                 192.168.11.1;
                option subnet-mask                         255.255.255.0;
                option nis-domain                            "cn7788.com";
                option domain-name                         "cn7788.com";
                option domain-name-servers         192.168.11.252;
                option time-offset                         -18000; # Eastern Standard Time
                range dynamic-bootp 192.168.11.34 192.168.11.159;
                default-lease-time 21600;
                max-lease-time 43200;
}

最後啓動dhcp服務:
service dhcpd start
注:如果機器數量過多的話,注意dhcp服務器的地址池,不要因爲耗盡IP而導致dhcpd服務器沒有IP地址release情況。
6)用yum工具自動安裝Kickstart,同時配置system-config-kickstart
a) 首先我們需要安裝Kickstart這個工具包,在CentOS最小化安裝系統時,此軟件包並沒有默認安裝,yum安裝命令如下所示:
yum –y install system-config-kickstart
b) gnome環境下配置Kickstart,命令如下所示:
system-config-Kickstart
運行上面的命令後可以對系統的一些基本配置進行設置,例如選擇時區、設置root的密碼等。
c) 接下來便要進行安裝了,建議選擇httpd安裝,切記不要輸入任何賬號,而是採用匿名安裝。
在安裝過程中,根據引導選擇安裝選項,不需要做更改。
d) Kickstart會讓我們選擇需要批量安裝的CentOS5.8分區信息,按照上一節所介紹的CentOS5.5 x86_64的安裝方法,我們創建四個分區,即//boot/dataswap分區。
e) 在進行網絡配置時,我使用的靜態分配地址(動態同樣如此),這裏跟前面進行光盤安裝是一樣的。
f) 設置顯示配置時可以按照我們的習慣選擇。
g) 關於軟件包的選擇,大家可以根據實際的工作需求來選擇自己需要的軟件包,由於服務器安裝後用途都是不一樣的,建議大家這裏選擇最小化安裝。
h) 其他都選擇默認設置,不需要修改。
i) 最後將生成的文件ks.cfg保存到/var/www/html下,此爲自動化無人值守安裝的重難點,此文件稍有配置不當的話就會需要人爲干預了,如果大家遇到問題,建議參考我下面的ks.cfg配置文件。
7)修改/tftpboot/pxelinux.cfg/default文件,指定讀取ks.cfg的方法,即修改文件第一行內容,改動後文件第一行內容如下所示:
default text ks=http://192.168.11.29/ks.cfg
另外,也建議將timeout時間由原先的600改爲1timeout時間是引導時等待用戶手動選擇的時間,設爲“1”可直接引導。
8/var/www/html/ks.cfg文件內容如下所示(此內容是整個實驗過程的重難點,請關注):
#platform=x86, AMD64, or Intel EM64T
#System authorization information
auth    --useshadow    --enablemd5
# System bootloader configuration
key --skip
bootloader --location=mbr
# Partition clearing information
clearpart --none 
# Use graphical install
graphical
# Firewall configuration
firewall --disabled
# Run the Setup Agent on first boot
firstboot --disable
#System keyboard
keyboard us
#System language
lang en_US
# Installation logging level
logging --level=info
# Use network installation
url --url=http://192.168.11.29/
# Network information
network --bootproto=dhcp --device=eth0 --onboot=on
reboot
#Root password
rootpw --iscrypted $1$biw2UUzu$/ZrtUhG9gGGGJn6edgUIQ1

# SELinux configuration
selinux --disabled
# System timezone
timezone --isUtc Asia/Shanghai
# Install OS instead of upgrade
install
# X Window System configuration information
xconfig    --defaultdesktop=GNOME --depth=8 --resolution=640x480
# Disk partitioning information
bootloader --location=mbr --driveorder=sda
clearpart --all --initlabel
part / --bytes-per-inode=4096 --fstype="ext3" --size=5120
part /boot --bytes-per-inode=4096 --fstype="ext3" --size=128
part swap --bytes-per-inode=4096 --fstype="swap" --size=500
part /data --bytes-per-inode=4096 --fstype="ext3" --grow --size=1

%packages
@base
@development-libs
@development-tools

此配置過程中的重難點我這裏說明下:
分區操作按照目前線上分區來操作,即分成//boot/dataswap四個分區,其中/data分區是存放數據的,我們這裏用--grow --size=1參數來將其餘的剩餘空間全部分配給/data分區。
key --skip如果是紅帽系統,此選項可以跳過輸入序列號過程;如果是CentOS 5.x系列,則可以不保留此項內容;
reboot 此選項必須存在,也必須文中設定位置,不然kickstart顯示一條消息,並等待用戶按任意鍵後才重新引導,此問題是很多朋友在論壇上發言提問的,我在實驗過程中也遇到此問題,建議多做幾次實驗;
clearpart --all --initlabel此條命令必須添加,不然系統會讓用戶手動選擇是否清除所有數據,這就需要人爲干預了,從而導致自動化過程失敗;
其它方面選項較容易看懂,我這裏就不再重複了。
9)將Kickstart需要的服務器均啓動後,此自動化安裝系統的過程就完成了,我們就可以在內網機櫃中全自動同時安裝CentOS5.8 x86_64系統了,服務器端啓動相應命令如下:
service httpd start
chkconfig httpd on
service dhcpd start
chkconfig dhcpd on
service xinetd restart
 
系統完成最小化後安裝後,大家可以根據自己公司的實際情況來進行系統的優化,此最小化優化腳本init.sh還可以讓puppet服務器進行推送,此腳本內容如下所示:
#/bin/bash
#add the epel repo
cd /usr/local/src
wget http://mirrors.ustc.edu.cn/fedora/epel//5/x86_64/epel-release-5-4.noarch.rpm
rpm -ivh epel-release-5-4.noarch.rpm
#add the rpmforge repo
cd /usr/local/src
wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm
rpm -ivh rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm

#yum install sysstat
yum -y install gcc gcc-c++ vim-enhanced unzip unrar sysstat

#set the ntp
yum -y install ntp
echo "01 01 * * * /usr/sbin/ntpdate ntp.api.bz    >> /dev/null 2>&1" >> /etc/crontab
ntpdate ntp.api.bz
service crond restart

#set the file limit
ulimit -SHn 65535
echo "ulimit -SHn 65535" >> /etc/rc.local
cat >> /etc/security/limits.conf << EOF
*                     soft     nofile             60000
*                     hard     nofile             65535
EOF

#tune kernel parametres
cat >> /etc/sysctl.conf << EOF
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 1
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.ip_local_port_range = 1024 65535
EOF
/sbin/sysctl -p

#set the control-alt-delete to guard against the misuse
sed -i 's@ca::ctrlaltdel:/sbin/shutdown -t3 -r now@#ca::ctrlaltdel:/sbin/shutdown -t3 -r now@' /etc/inittab

#disable selinux
sed -i 's@SELINUX=enforcing@SELINUX=disabled@' /etc/selinux/config

#ssh setting
sed -i -e '74 s/^/#/' -i -e '76 s/^/#/' /etc/ssh/sshd_config
sed -i 's@#UseDNS yes@UseDNS no@' /etc/ssh/sshd_config
service sshd restart

#disable ipv6
echo "alias net-pf-10 off" >> /etc/modprobe.conf
echo "alias ipv6 off" >> /etc/modprobe.conf
echo "install ipv6 /bin/true" >> /etc/modprobe.conf
echo "IPV6INIT=no" >> /etc/sysconfig/network
sed -i 's@NETWORKING_IPV6=yes@NETWORKING_IPV6=no@'    /etc/sysconfig/network
chkconfig ip6tables off

#vim setting
echo "syntax on" >> /root/.vimrc
echo "set nohlsearch" >> /root/.vimrc

#chkconfig off services
chkconfig bluetooth off
chkconfig sendmail off
chkconfig kudzu off
chkconfig nfslock off
chkconfig portmap off
chkconfig iptables off
chkconfig autofs off
chkconfig yum-updatesd off

#reboot system
Reboot

注意:
#tune kernel parametres爲內核優化部分,在這裏我只做了基礎處理,大家有需求可以自行修改,記住:一切以系統穩定爲原則。
#vim setting選項爲vim的個性化配置,如果想vim語法高亮,則必須安裝vim-enhanced包,另外,vim在使用搜索功能,搜索選中內容爲高亮,感覺不是特別舒服,所以我這裏用了set nohlsearch選項,如果大家不介意此項功能,則不需要添加此語句;
#disable ipv6選項我在測試時發現,在CentOS5.8 x86_64系統下,如果不添加install ipv6 /bin/true此語句到/etc/modprobe.conf文件裏,是關閉不了ipv6選項的,而測試的CentOS5.5 | 5.6不添加此句均可以順利關閉ipv6,這點請大家注意,當然了,最後要reboot系統讓此配置生效。
 
引申:相信大家的開發環境應該有不少Xen虛擬機,雖然Xen有自身的模板文件操作,但我們也可以利用Kickstart的方式快速無人值守安裝Xen虛擬機系統,命令如下所示:
virt-install  -n vm4  -r 300  -f /data/vm/vm4.img -s 8 -p -l http://192.168.11.29 -x ks=http://192.168.11.29/ks.cfg
 
由於Xen結合Kickstart並不是本文檔的重點內容,有興趣的朋友可以可以自行研究;另外有一點請大家一定要注意:
由於此安裝方法太智能化,在網絡引導成功以後會自動清除硬盤數據並重新安裝新的系統,所以建議大家將此工作區域和網段獨立出來,或者在進行完安裝工作以後就停用Kickstart服務器,以免對正常工作的服務器造成不必要的麻煩。由於個人能力有限,鑑於工作環境的嚴謹性,文檔中的某些錯誤和不合理之處,敬請指教。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章