从事网游运维的兄弟们应该深有感触,往往在开新服的时候需要大批量的布署新的服务器,时间紧迫而且量大,装系统、初始化,枯燥而又乏味,有时还容易出错, 为了解放我们的双手,所以要实现自动化,Red Hat 最新发布了网络安装服务器套件 Cobbler(补鞋匠)集成了PXE、DHCP、DNS、Kickstart服务管理和yum仓库管理工具,相对之前的 Kickstart 更加快捷、方便的批量布署red hat、centos类系统


1、安装rpmforce源
CentOS 5.5默认的Repository里找不到Cobbler,先安装rpmforce这个Repository
cd /opt
wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.i386.rpm
rpm -ivh rpmforge-release-0.5.2-2.el6.rf.i686.rpm

2、安装相关软件
yum -y install cobbler dhcp httpd xinetd tftp-server

3、检查cobbler配置
cobbler check

根椐提示修改配置文件
/var/lib/cobbler/settings 中的 server 和 next_server 对应的127.0.0.1修改为本服务器的 IP 地址,
manage_dhcp 设为 1,以便管理 DHCP


将 /etc/xinetd.d/tftp 中 disable = no

4、导入精简后的ISO
mkdir -p /mnt/iso
mount -o loop /data/KerryOS-1.0-i386.iso /mnt/iso
cobbler import --mirror=/mnt/iso --name=kerryOS-1.0-i386

查看导入结果
cobbler distro list


5、修改 DHCP 和 Kickstart 配置模板
#修改DHCP配置模板
vi /etc/dhcpd.conf
vi /etc/cobbler/dhcp.template

  1. ddns-update-style interim;  
  2.  
  3. allow booting;  
  4. allow bootp;  
  5.  
  6. ignore client-updates;  
  7. set vendorclass option vendor-class-identifier;  
  8.  
  9. subnet 192.168.9.0 netmask 255.255.255.0 {  
  10.      option routers          192.168.9.1;   #路由器地址  
  11.      option subnet-mask      255.255.255.0;  #子网掩码选项  
  12.      option domain-name-servers  192.168.9.1;  #DNS地址  
  13.      range dynamic-bootp     192.168.9.200 192.168.9.254;  #动态IP范围  
  14.      filename                "/pxelinux.0";  
  15.      default-lease-time      21600;     #缺省租约时间  
  16.      max-lease-time          43200; #最大租约时间  
  17.      next-server             192.168.9.230;  #指定引导服务器  

#修改 Kickstart 配置模板
mv /var/www/cobbler/kickstarts/kerryOS-1.0-i386/ks.cfg /var/www/cobbler/kickstarts/kerryOS-1.0-i386/ks.cfg.bak
mv /var/www/cobbler/kickstarts/kerryOS-1.0-xen-i386/ks.cfg /var/www/cobbler/kickstarts/kerryOS-1.0-xen-i386/ks.cfg.bak
vi /etc/cobbler/default.ks
vi /var/www/cobbler/kickstarts/kerryOS-1.0-i386/ks.cfg
vi /var/www/cobbler/kickstarts/kerryOS-1.0-xen-i386/ks.cfg 

  1. Kickstart file automatically generated by anaconda.  
  2. #Install OS instead of upgrade  
  3. install  
  4. #Use text mode install   
  5. text  
  6. #Use CDROM installation media   
  7. cdrom  
  8. lang en_US.UTF-8  
  9. keyboard us  
  10.  
  11. #Skip the Configuration  
  12. skipx  
  13. #Use network installation  
  14. url --url=http://192.168.9.230/cobbler/ks_mirror/kerryOS-1.0-i386  
  15. #Network information   
  16. #network --device eth0 --bootproto static --ip 192.168.9.226 --netmask 255.255.255.0 --gateway 192.168.9.1 --nameserver 192.168.9.1 --noipv6 --onboot=yes --hostname kerry-web-001  
  17. network --device eth0 --bootproto dhcp --noipv6 --hostname kerry-web-001  
  18. #root -- 1q2w3e  
  19. rootpw --iscrypted $1$n07CbCot$GP.VBeICPHj.QkJb5Y2C2.  
  20. firewall --disabled  
  21. #System authorization information  
  22. authconfig --enableshadow --enablemd5  
  23. selinux --disabled  
  24. timezone --utc Asia/Shanghai  
  25. #System bootloader configuration   
  26. bootloader --location=mbr 
  27. #Clear the Master Boot Record  
  28. zerombr yes  
  29.  
  30. Set the Mouse  
  31. mouse generic3ps/2  
  32.  
  33. The following is the partition information you requested  
  34. Note that any partitions you deleted are not expressed  
  35. here so unless you clear all partitions first, this is  
  36. not guaranteed to work  
  37.  
  38. #Partition clearing information  
  39. clearpart --all --initlabel  
  40. part /boot --fstype ext3 --size=200 --asprimary  
  41. part --fstype ext3 --size=10000 
  42. part swap --size=2048 
  43. part /data --fstype ext3 --size=1 --grow  
  44.  
  45. #--- Reboot the host after installation is done  
  46. reboot  
  47.  
  48. %packages  
  49. %packages  
  50. @base  
  51. @core  
  52. @development-libs  
  53. @development-tools  
  54. @editors  
  55. @text-internet  
  56. keyutils  
  57. trousers  
  58. fipscheck  
  59. device-mapper-multipath  
  60. imake  
  61.  
  62. %post --nochroot  
  63. Mount CDROM  
  64. mkdir -p /mnt/cdrom  
  65. mount -r -t iso9660 /tmp/cdrom /mnt/cdrom  
  66. cp /mnt/cdrom/ipmod /mnt/sysp_w_picpath/root/ipmod > /dev/null  
  67.  
  68. umount /mnt/cdrom  
  69.  
  70. %post  
  71. #vim syntax on  
  72. sed -i "8 s/^/alias vi='vim'/" /root/.bashrc 2>/dev/null  
  73. echo 'syntax on' > /root/.vimrc 2>/dev/null  
  74.  
  75. #init_ssh  
  76. ssh_cf="/etc/ssh/sshd_config" 
  77. sed -i -e '74 s/^/#/' -i -e '76 s/^/#/' $ssh_cf  
  78. sed -i "s/#UseDNS yes/UseDNS no/" $ssh_cf  
  79.  
  80. #client  
  81. sed -i -e '44 s/^/#/' -i -e '48 s/^/#/' $ssh_cf  
  82.  
  83. Remove the ISO File translation files  
  84. find -name TRANS.TBL -exec rm {} \; /dev/null 2>/dev/null  
  85.  
  86. Remove some unneeded services  
  87. #--------------------------------------------------------------------------------  
  88. cat << EOF 
  89. +--------------------------------------------------------------+  
  90. === Welcome to Tunoff services === |  
  91. +--------------------------------------------------------------+  
  92. EOF  
  93. #---------------------------------------------------------------------------------  
  94. for in `ls /etc/rc3.d/S*`  
  95. do  
  96.     CURSRV=`echo $i|cut -c 15-`  
  97. echo $CURSRV  
  98. case $CURSRV in  
  99.         crond irqbalance microcode_ctl network random sshd syslog local )  
  100.     echo "Base services, Skip!"  
  101.     ;;  
  102.     *)  
  103.         echo "change $CURSRV to off"  
  104.         chkconfig --level 235 $CURSRV off  
  105.         service $CURSRV stop  
  106.     ;;  
  107. esac  
  108. done  
  109.  
  110. file descriptors  
  111. ulimit -HSn 65535  
  112.  
  113. echo -ne "  
  114. soft nofile 65536  
  115. hard nofile 65536  
  116. >>/etc/security/limits.conf  
  117.  
  118. #set sysctl  
  119. true > /etc/sysctl.conf  
  120. cat >> /etc/sysctl.conf << EOF 
  121. net.ipv4.ip_forward 0 
  122. net.ipv4.conf.default.rp_filter 1 
  123. net.ipv4.conf.default.accept_source_route 0 
  124. kernel.sysrq 0 
  125. kernel.core_uses_pid 1 
  126. net.ipv4.tcp_syncookies 1 
  127. kernel.msgmnb 65536 
  128. kernel.msgmax 65536 
  129. kernel.shmmax 68719476736 
  130. kernel.shmall 4294967296 
  131. net.ipv4.tcp_max_tw_buckets 6000 
  132. net.ipv4.tcp_sack 1 
  133. net.ipv4.tcp_window_scaling 1 
  134. net.ipv4.tcp_rmem 4096 87380 4194304  
  135. net.ipv4.tcp_wmem 4096 16384 4194304  
  136. net.core.wmem_default 8388608 
  137. net.core.rmem_default 8388608 
  138. net.core.rmem_max 16777216 
  139. net.core.wmem_max 16777216 
  140. net.core.netdev_max_backlog 262144 
  141. net.core.somaxconn 262144 
  142. net.ipv4.tcp_max_orphans 3276800 
  143. net.ipv4.tcp_max_syn_backlog 262144 
  144. net.ipv4.tcp_timestamps 0 
  145. net.ipv4.tcp_synack_retries 1 
  146. net.ipv4.tcp_syn_retries 1 
  147. net.ipv4.tcp_tw_recycle 1 
  148. net.ipv4.tcp_tw_reuse 1 
  149. net.ipv4.tcp_mem 94500000 915000000 927000000  
  150. net.ipv4.tcp_fin_timeout 1 
  151. net.ipv4.tcp_keepalive_time 1200 
  152. net.ipv4.ip_local_port_range 1024 65535  
  153. EOF  
  154.  
  155. /sbin/sysctl -p  
  156.  
  157. #close ctrl+alt+del  
  158. sed -i "s/ca::ctrlaltdel:\/sbin\/shutdown -t3 -r now/#ca::ctrlaltdel:\/sbin\/shutdown -t3 -r now/" /etc/inittab  
  159.  
  160. #set purview   
  161. chmod 600 /etc/passwd  
  162. chmod 600 /etc/shadow  
  163. chmod 600 /etc/group  
  164. chmod 600 /etc/gshadow 

6、生成并同步所有配置
cobbler sync

7、启动相关的服务
/etc/init.d/httpd start
/etc/init.d/xinetd start
/etc/init.d/dhcpd start
/etc/init.d/cobblerd start

chkconfig --level 35 httpd on
chkconfig --level 35 xinetd on
chkconfig --level 35 dhcpd on
chkconfig --level 35 cobblerd on

#记得关闭防火墙
/etc/init.d/iptables stop
chkconfig --level 35 iptables off

8、相关配置文件及目录
cobbler相关配置文件: /etc/cobbler
cobbler数据存储目录: /var/www/cobbler
dhcp配置文件: /etc/dhcpd.conf
dhcp租期缓存文件: /var/lib/dhcpd/dhcpd.leases
pxe配置文件: /tftpboot/pxelinux.cfg/default
ks模板文件: /var/lib/cobbler/kickstarts_*.ks

9、客户端通过PXE安装系统
启动另一台新服务器,通过 PXE 启动进入,提示"boot:"时输入"menu"即可进入蓝色的 Cobbler 安装界面,选择安装项,自动完成系统安装。

10、重装系统
CentOS 5.5默认的Repository里找不到koan,先安装rpmforce这个Repository
cd /opt
wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.i386.rpm
rpm -ivh rpmforge-release-0.5.2-2.el6.rf.i686.rpm

#在要重装的机器安装koan 
yum -y install koan 

#查看cobbler服务器有哪些安装盘 
koan --list-profiles --server=192.168.9.230

#选择要重装的系统并重启 
koan --replace-self --server=192.168.9.230 --profile=kerryOS-1.0-i386
reboot 

11、服务控制脚本
vi /etc/init.d/cobbler_all

  1. #!/bin/sh  
  2.  
  3. case $1 in  
  4.         start)  
  5.                /etc/init.d/httpd start  
  6.                /etc/init.d/xinetd start   
  7.                /etc/init.d/dhcpd start  
  8.                /etc/init.d/cobblerd start  
  9.                 ;;  
  10.         stop)  
  11.                /etc/init.d/httpd stop  
  12.                /etc/init.d/xinetd stop   
  13.                /etc/init.d/dhcpd stop  
  14.                /etc/init.d/cobblerd stop  
  15.                 ;;  
  16.         status)  
  17.                 /etc/init.d/httpd status  
  18.                 /etc/init.d/xinetd status   
  19.                 /etc/init.d/dhcpd status  
  20.                 /etc/init.d/cobblerd status  
  21.                 ;;       
  22.          sync)  
  23.                 cobbler sync  
  24.                 ;;                            
  25.         *)  
  26.                 echo "Input error,please in put 'start|stop|status|sync'!";   
  27.                 exit 2>&1 >/dev/null &  
  28.                 ;;   
  29.         esac 

chmod +x /etc/init.d/cobbler_all

/etc/init.d/cobbler_all  start|stop|startus|sync

本文出自 “聆听未来” 博客,请务必保留此出处http://kerry.blog.51cto.com/172631/648430