如果要同時上線2,3臺服務器,可以使用手動安裝操作系統,10臺20臺基本沒法忍受,上百臺呢,根本不可能手動安裝管理,只考慮到這裏並不能解決所有問題,只裝個系統並不能滿足批量管理的需求,這就需要在安裝好系統後自動啓動salt客戶端程序,實現在裝完系統後就在運維人員的管理範圍之類,這篇文章就是基於這樣的需求而完成的。
環境介紹:Centos6.5+PXE+TFTP+FTP+DHCP+Kickstart
1.配置DHCP服務程序
①安裝DHCP服務
yum -y install dhcp
②配置DHCP服務
vim /etc/dhcp/dhcp.conf
allow booting; allow bootp; ddns-update-style interim; ignore client-updates; subnet 192.168.6.0 netmask 255.255.255.0 { range 192.168.6.200 192.168.6.210; option subnet-mask 255.255.255.0; option routers 192.168.6.1; option domain-name-servers 202.106.0.20; default-lease-time 21600; max-lease-time 43200; next-server 192.168.6.107; #服務器端IP filename "pxelinux.0"; #引導文件 }
③啓動服務
service dhcpd start
2.配置TFTP服務程序(提供引導以及驅動文件)
①安裝TFTP服務
yum -y install tftp-server
②配置TFTP服務
vim /etc/xinetd.d/tftp
service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /var/lib/tftpboot disable = no #修改爲no per_source = 11 cps = 100 2 flags = IPv4
③啓動TFTP服務,開啓相應端口
service xinetd restart #在Centos7中沒有這個服務,啓動tftp.socket即可
iptables -I INPUT -p udp --dport 69 -j ACCEPT
3.配置SYSlinux服務程序(提供引導文件)
①安裝SYSlinux服務
yum -y install syslinux
②複製引導文件到TFTP中
cd /var/lib/tftpboot/
cp /usr/share/syslinux/pxelinux.0 .
mount /dev/cdrom /media/ #掛載光盤鏡像
cp /media/images/pxeboot/{vmlinuz,initrd.img} .
cp /media/isolinux/{vesamenu.c32,boot.msg} .
③修改默認開機菜單
cd /var/lib/tftpboot/
mkdir pxelinux.cfg
cp /media/isolinux/isolinux.cfg pxelinux.cfg/default
chmod a+w pxelinux.cfg/default #默認是隻讀文件
vim pxelinux.cfg/default
default linux #修改成linux,這樣在啓動時就會自動選擇此選項 #prompt 1 timeout 600 display boot.msg menu background splash.jpg menu title Welcome to CentOS 6.5! menu color border 0 #ffffffff #00000000 menu color sel 7 #ffffffff #ff000000 menu color title 0 #ffffffff #00000000 menu color tabmsg 0 #ffffffff #00000000 menu color unsel 0 #ffffffff #00000000 menu color hotsel 0 #ff000000 #ffffffff menu color hotkey 7 #ffffffff #ff000000 menu color scrollbar 0 #ffffffff #00000000 label linux menu label ^Install or upgrade an existing system menu default kernel vmlinuz append initrd=initrd.img inst.stage2=ftp://192.168.66.23 ks=ftp://192.168.66.23/pub/ks.cfg quiet #修改默認安裝方式爲FTP文件傳輸方式,指定Kickstart應答文件的獲取路徑 label vesa menu label Install system with ^basic video driver kernel vmlinuz append initrd=initrd.img xdriver=vesa nomodeset label rescue menu label ^Rescue installed system kernel vmlinuz append initrd=initrd.img rescue label local menu label Boot from ^local drive localboot 0xffff label memtest86 menu label ^Memory test kernel memtest append -
4.配置vsftpd服務程序
①安裝vsftpd服務
yum -y instlal vsftpd
②啓動vsftpd服務,開啓相應端口
service vsftpd start
iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -I INPUT -p tcp --dport 20 -j ACCEPT
iptables -I INPUT -p tcp --dport 21 -j ACCEPT
③拷貝光盤鏡像文件到vsftpd中
cp -r /media/* /var/ftp/
5.創建Kickstart應答文件
①複製應答文件到VSFTPD中,並添加可讀權限
cp ~/anaconda-ks.cfg /var/ftp/pub/ks.cfg
chmod +r /var/ftp/pub/ks.cfg
②編輯應答文件
vim /var/ftp/pub/ks.cfg
# Kickstart file automatically generated by anaconda. #version=DEVEL install url --url=ftp://192.168.6.107 #修改爲url安裝方式 lang en_US.UTF-8 keyboard us network --onboot yes --device eth0 --bootproto dhcp --noipv6 #修改爲自動獲取ip rootpw --iscrypted $6$LCJ6k6MZq5bR6VFp$i.UkCmr7KbhB5Wx0IhQ9L834eW3eO1GZRKa0RxFiCGmXvbZd6wN7n7BkP961FU5DaX53ydFlj5lVSmHfGUWrY/ firewall --service=ssh #防火牆配置 authconfig --enableshadow --passalgo=sha512 selinux --disable #selinux關閉 reboot #安裝後自動重啓 timezone Asia/Shanghai #時區 bootloader --append="rhgb quiet" --location=mbr --driveorder=sda clearpart --all --initlabel #清理所有分區 #LVM方式分區 part /boot --fstype="ext4" --size=200 #boot分區200M part pv.01 --grow --size=1 volgroup VolGroup --pesize=4096 pv.01 logvol / --fstype="ext4" --name=lv_root --vgname=VolGroup --size=10240 #根分區10G logvol swap --name=lv_swap --vgname=VolGroup --size=2048 #交換分區2G %packages #安裝基礎包 @base @console-internet @core @debugging @directory-client @hardware-monitoring @java-platform @large-systems @network-file-system-client @performance @perl-runtime @server-platform @server-policy @workstation-policy pax oddjob sgpio device-mapper-persistent-data samba-winbind certmonger pam_krb5 krb5-workstation perl-DBD-SQLite %end %post #安裝後執行腳本 /usr/sbin/ntpdate 182.92.12.11 #和阿里雲服務器對時 /sbin/hwclock -w #讓硬件時間和系統時間同步 /sbin/ifconfig |grep Bcast|awk '{print $2}'|awk -F '.' '{print $4}' > /etc/hostname #截取Ip地址最後一段做爲主機名 /usr/bin/yum -y install epel-release #安裝epel倉庫 /usr/bin/yum -y install salt-minion #安裝salt客戶端 /bin/sed -i "s/#master: salt/master: 192.168.6.107/" /etc/salt/minion #修改客戶端配置文件的master連接地址 /sbin/service salt-minion start #啓動salt-minion服務 /sbin/chkconfig salt-minion on #因爲裝完系統會自動重啓,所以先設置開機啓動項 %end
6.自動部署客戶端主機
流程如下:
自動獲取IP--自動開始安裝--自動選擇所有可選項--自動分區--安裝基礎包(621個)--運行腳本--自動重啓--進入操作系統
需要檢查的東西:
主機名(hostname),ip地址(ifconfig),時間(date),salt-minion服務是否已經開啓(service salt-minion status)
7.和已經安裝好salt客戶端的主機建立連接
①salt-key list
看到以ip地址最後一位命名的主機的驗證請求
②salt-key -A
至此已經進入運維人員管理範圍。