從事網遊運維的兄弟們應該深有感觸,每每在開新服的時候須要大批量的佈署新的服務器,時間緊迫並且量大,裝系統、初始化,枯燥而又乏味,有時還容易出錯,爲了解放咱們的雙手,因此要實現自動化,Red Hat 最新發布了網絡安裝服務器套件 Cobbler(補鞋匠)集成了PXE、DHCP、DNS、Kickstart服務管理和yum倉庫管理工具,相對以前的 Kickstart 更加快捷、方便的批量佈署red hat、centos類系統linux
一、安裝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.rpmweb
二、安裝相關軟件
yum -y install cobbler dhcp httpd xinetd tftp-serverexpress
三、檢查cobbler配置
cobbler checkvim
根椐提示修改配置文件
/var/lib/cobbler/settings 中的 server 和 next_server 對應的127.0.0.1修改成本服務器的 IP 地址,
manage_dhcp 設爲 1,以便管理 DHCPcentos
將 /etc/xinetd.d/tftp 中 disable = no緩存
四、導入精簡後的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-i386bash
查看導入結果
cobbler distro list服務器
五、修改 DHCP 和 Kickstart 配置模板
#修改DHCP配置模板
vi /etc/dhcpd.conf
vi /etc/cobbler/dhcp.templatecookie
- ddns-update-style interim;
- allow booting;
- allow bootp;
- ignore client-updates;
- set vendorclass = option vendor-class-identifier;
- subnet 192.168.9.0 netmask 255.255.255.0 {
- option routers 192.168.9.1; #路由器地址
- option subnet-mask 255.255.255.0; #子網掩碼選項
- option domain-name-servers 192.168.9.1; #DNS地址
- range dynamic-bootp 192.168.9.200 192.168.9.254; #動態IP範圍
- filename "/pxelinux.0";
- default-lease-time 21600; #缺省租約時間
- max-lease-time 43200; #最大租約時間
- 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
網絡
- # Kickstart file automatically generated by anaconda.
- #Install OS instead of upgrade
- install
- #Use text mode install
- text
- #Use CDROM installation media
- cdrom
- lang en_US.UTF-8
- keyboard us
- #Skip the X Configuration
- skipx
- #Use network installation
- url --url=http://192.168.9.230/cobbler/ks_mirror/kerryOS-1.0-i386
- #Network information
- #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
- network --device eth0 --bootproto dhcp --noipv6 --hostname kerry-web-001
- #root -- 1q2w3e
- rootpw --iscrypted $1$n07CbCot$GP.VBeICPHj.QkJb5Y2C2.
- firewall --disabled
- #System authorization information
- authconfig --enableshadow --enablemd5
- selinux --disabled
- timezone --utc Asia/Shanghai
- #System bootloader configuration
- bootloader --location=mbr
- #Clear the Master Boot Record
- zerombr yes
- # Set the Mouse
- mouse generic3ps/2
- # 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
- #Partition clearing information
- clearpart --all --initlabel
- part /boot --fstype ext3 --size=200 --asprimary
- part / --fstype ext3 --size=10000
- part swap --size=2048
- part /data --fstype ext3 --size=1 --grow
- #--- Reboot the host after installation is done
- reboot
- %packages
- %packages
- @base
- @core
- @development-libs
- @development-tools
- @editors
- @text-internet
- keyutils
- trousers
- fipscheck
- device-mapper-multipath
- imake
- %post --nochroot
- # Mount CDROM
- mkdir -p /mnt/cdrom
- mount -r -t iso9660 /tmp/cdrom /mnt/cdrom
- cp /mnt/cdrom/ipmod /mnt/sysp_w_picpath/root/ipmod > /dev/null
- umount /mnt/cdrom
- %post
- #vim syntax on
- sed -i "8 s/^/alias vi='vim'/" /root/.bashrc 2>/dev/null
- echo 'syntax on' > /root/.vimrc 2>/dev/null
- #init_ssh
- ssh_cf="/etc/ssh/sshd_config"
- sed -i -e '74 s/^/#/' -i -e '76 s/^/#/' $ssh_cf
- sed -i "s/#UseDNS yes/UseDNS no/" $ssh_cf
- #client
- sed -i -e '44 s/^/#/' -i -e '48 s/^/#/' $ssh_cf
- # Remove the ISO File translation files
- find / -name TRANS.TBL -exec rm {} \; /dev/null 2>/dev/null
- # Remove some unneeded services
- #--------------------------------------------------------------------------------
- cat << EOF
- +--------------------------------------------------------------+
- | === Welcome to Tunoff services === |
- +--------------------------------------------------------------+
- EOF
- #---------------------------------------------------------------------------------
- for i in `ls /etc/rc3.d/S*`
- do
- CURSRV=`echo $i|cut -c 15-`
- echo $CURSRV
- case $CURSRV in
- crond | irqbalance | microcode_ctl | network | random | sshd | syslog | local )
- echo "Base services, Skip!"
- ;;
- *)
- echo "change $CURSRV to off"
- chkconfig --level 235 $CURSRV off
- service $CURSRV stop
- ;;
- esac
- done
- # file descriptors
- ulimit -HSn 65535
- echo -ne "
- * soft nofile 65536
- * hard nofile 65536
- " >>/etc/security/limits.conf
- #set sysctl
- true > /etc/sysctl.conf
- cat >> /etc/sysctl.conf << EOF
- net.ipv4.ip_forward = 0
- net.ipv4.conf.default.rp_filter = 1
- net.ipv4.conf.default.accept_source_route = 0
- kernel.sysrq = 0
- kernel.core_uses_pid = 1
- net.ipv4.tcp_syncookies = 1
- kernel.msgmnb = 65536
- kernel.msgmax = 65536
- kernel.shmmax = 68719476736
- kernel.shmall = 4294967296
- net.ipv4.tcp_max_tw_buckets = 6000
- net.ipv4.tcp_sack = 1
- net.ipv4.tcp_window_scaling = 1
- net.ipv4.tcp_rmem = 4096 87380 4194304
- net.ipv4.tcp_wmem = 4096 16384 4194304
- net.core.wmem_default = 8388608
- net.core.rmem_default = 8388608
- net.core.rmem_max = 16777216
- net.core.wmem_max = 16777216
- net.core.netdev_max_backlog = 262144
- net.core.somaxconn = 262144
- net.ipv4.tcp_max_orphans = 3276800
- net.ipv4.tcp_max_syn_backlog = 262144
- net.ipv4.tcp_timestamps = 0
- net.ipv4.tcp_synack_retries = 1
- net.ipv4.tcp_syn_retries = 1
- net.ipv4.tcp_tw_recycle = 1
- net.ipv4.tcp_tw_reuse = 1
- net.ipv4.tcp_mem = 94500000 915000000 927000000
- net.ipv4.tcp_fin_timeout = 1
- net.ipv4.tcp_keepalive_time = 1200
- net.ipv4.ip_local_port_range = 1024 65535
- EOF
- /sbin/sysctl -p
- #close ctrl+alt+del
- sed -i "s/ca::ctrlaltdel:\/sbin\/shutdown -t3 -r now/#ca::ctrlaltdel:\/sbin\/shutdown -t3 -r now/" /etc/inittab
- #set purview
- chmod 600 /etc/passwd
- chmod 600 /etc/shadow
- chmod 600 /etc/group
- chmod 600 /etc/gshadow
六、生成並同步全部配置
cobbler sync
七、啓動相關的服務
/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
八、相關配置文件及目錄
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
九、客戶端經過PXE安裝系統
啓動另外一臺新服務器,經過 PXE 啓動進入,提示"boot:"時輸入"menu"便可進入藍色的 Cobbler 安裝界面,選擇安裝項,自動完成系統安裝。
十、重裝系統
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
十一、服務控制腳本
vi /etc/init.d/cobbler_all
- #!/bin/sh
- case $1 in
- start)
- /etc/init.d/httpd start
- /etc/init.d/xinetd start
- /etc/init.d/dhcpd start
- /etc/init.d/cobblerd start
- ;;
- stop)
- /etc/init.d/httpd stop
- /etc/init.d/xinetd stop
- /etc/init.d/dhcpd stop
- /etc/init.d/cobblerd stop
- ;;
- status)
- /etc/init.d/httpd status
- /etc/init.d/xinetd status
- /etc/init.d/dhcpd status
- /etc/init.d/cobblerd status
- ;;
- sync)
- cobbler sync
- ;;
- *)
- echo "Input error,please in put 'start|stop|status|sync'!";
- exit 2>&1 >/dev/null &
- ;;
- esac
chmod +x /etc/init.d/cobbler_all
/etc/init.d/cobbler_all start|stop|startus|sync