自動化運維之PXE網絡安裝系統實戰linux
爲何要用PXE網絡安裝操做系統?web
若是給一臺主機安裝一個linux系統,用光盤安裝或者用U盤安裝均可以實現,可是在生產環境中有時候須要給數十臺、數百臺主機安裝操做系統,那用光盤一個一個的安裝這種方式確定是不可行的,相信也沒有人會去這麼作。這時就須要一個可以給多個主機同時安裝系統的工具了,PXE就是這樣的一個工具,他能夠實現同時對多臺主機同時安裝系統。centos
PXE安裝系統的流程:bash
一、須要安裝系統的主機的網卡支持網絡安裝,不過如今不用擔憂,隨着科技的發展,如今幾乎因此的主機都支持。
二、客戶端主機須要有一個IP地址來與PXE Server進行通訊,這時網絡中必需要有一個主機能自動分配IP。DHCP就是一個能爲主機自動分配IP地址的服務,DHCP也能夠安裝在PXE Server主機上。
三、客戶機獲得IP地址後,須要提供一個引導程序pxelinux.0(相似於grub) 此文件由syslinux提供,因此須要安裝syslinux。和能加載內核及內核鏡像等文件,客戶機能夠經過TFTP協議到TFTP Server上下載內核及內核鏡像文件,因此須要一個TFTP 服務,TFTP也能夠安裝在PXE Server主機上,客戶機只是知道能夠用TFTP協議下載文件,可是TFTP Server的IP是那個,這個還得須要DHCP服務器指名告訴客戶機那個是TFTP Server,而TFTP服務須要超級進程進行管理,此進程是xinet,所以須要安裝xinet服務。
四、若是想實現徹底自動化部署操做系統,則須要一個kickstart文件,沒有此文件則安裝系統的時候須要本身手動一個一個的選擇進行安裝,kickstart文件能夠本身手動的寫編寫,也能夠用system-config-kickstart工具進行生成,若是須要則能夠在PXE Server上安裝system-config-kickstart工具。
五、已經有了kickstart文件了,kickstart文件中有一個參數指定了須要以什麼方式,在哪裏去找安裝源(此安裝源就是安裝系統所需的軟件),這樣的方式能夠是,nfs、ftp、http等,選擇其一便可,博主在此選擇ftp方式提供安裝源。
由上述流程能夠獲得用PXE安裝軟件所需的依賴性包:服務器
dhcp #提供IP地址,指名TFTP Server的地址,pxelinux文件 tftp-server #提供引導所需的文件,內核文件,內核鏡像文件等 xinetd #管理tftp服務的超級進程 syslinux #提供pxelinux文件 system-config-kickstart #生成kickstart文件的工具 vsftpd #提供安裝源
各軟件的安裝及其配置:
網絡
[root@jie1 ~]# cat /etc/yum.repos.d/server.repo [centos] name=sohu-centos baseurl=http://mirrors.sohu.com/centos/$releasever/os/$basearch gpgcheck=1 enable=0 gpgkey=http://mirrors.sohu.com/centos/RPM-GPG-KEY-CentOS-6 [epel] name=sohu-epel baseurl=http://mirrors.sohu.com/fedora-epel/$releasever/$basearch/ enable=1 [root@jie1 ~]# ifconfig eth0 | awk '/inet addr:/ {print $2}' addr:192.168.22.1 [root@jie1 ~]# yum -y install dhcp tftp-server xinetd syslinux system-config-kickstart vsftpd
DHCP服務的配置:
app
[root@jie1 ~]# cat /etc/dhcp/dhcpd.conf # DHCP Server Configuration file. # see /usr/share/doc/dhcp*/dhcpd.conf.sample # see 'man 5 dhcpd.conf' [root@jie1 ~]# cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf cp: overwrite `/etc/dhcp/dhcpd.conf'? y [root@jie1 ~]# grep -v "^#" /etc/dhcp/dhcpd.conf | grep -v "^$" option domain-name "jie.com"; option domain-name-servers 192.168.22.1; default-lease-time 43200; max-lease-time 86400; log-facility local7; subnet 192.168.22.0 netmask 255.255.255.0 { range 192.168.22.100 192.168.22.200; option routers 192.168.22.1; } next-server 192.168.22.1; filename="pxelinux.0";
安裝源的提供:運維
[root@jie1 ~]# service vsftpd start Starting vsftpd for vsftpd: [ OK ] [root@jie1 ~]# mkdir /var/ftp/pub/centos-6.4-x86_64 [root@jie1 ~]# mount /dev/cdrom /var/ftp/pub/centos-6.4-x86_64 mount: block device /dev/sr0 is write-protected, mounting read-only
kickstart文件:dom
而後點擊File--->save保存便可
ide
#============用system-config-kickstart生成的kickstart文件=========== [root@jie1 ~]# cat ks.cfg #platform=x86, AMD64, or Intel EM64T #version=DEVEL # Firewall configuration firewall --disabled # Install OS instead of upgrade install # Use network installation url --url="ftp://192.168.22.1/pub/centos-6.4-x86_64" # Root password rootpw --iscrypted $1$rwNUnQGy$0CfH0U2/y028PzfcdTPZJ. # System authorization information auth --useshadow --passalgo=sha512 # Use graphical install graphical firstboot --disable # System keyboard keyboard us # System language lang en_US # SELinux configuration selinux --disabled # Installation logging level logging --level=info # Reboot after installation reboot # System timezone timezone Asia/Shanghai # Network information network --bootproto=dhcp --device=eth0 --onboot=on # System bootloader configuration bootloader --append="crashkernel=auto crashkernel=auto rhgb rhgb quiet quiet" --location=mbr --driveorder="sda" # Clear the Master Boot Record zerombr # Partition clearing information clearpart --all --initlabel part /boot --fstype=ext4 --size=200 part pv.008002 --size=81440 volgroup vg0 --pesize=8192 pv.008002 logvol / --fstype=ext4 --name=root --vgname=vg0 --size=20480 logvol swap --name=swap --vgname=vg0 --size=2048 logvol /usr --fstype=ext4 --name=usr --vgname=vg0 --size=20240 logvol /var --fstype=ext4 --name=var --vgname=vg0 --size=20480 %post sed -i '1,$s@id:[0-9]:initdefault:@id:3:initdefault:@g' /etc/inittab # Set the hostname IP=`ifconfig eth0 | awk '/inet addr:/{print $2}' | awk -F. '{print $NF}'` sed -i "s@HOSTNAME=.*@HOSTNAME=web$IP.jie.com@g" /etc/sysconfig/network %end #install package %packages @core @server-policy %end [root@jie1 ~]# cp ks.cfg /var/ftp/pub/centos6.cfg
所需的引導文件:
[root@jie1 ~]# cd /var/lib/tftpboot/ [root@jie1 tftpboot]# mkdir pxelinux.cfg [root@jie1 tftpboot]# cp /var/ftp/pub/centos-6.4-x86_64/isolinux/{boot.msg,splash.jpg,vesamenu.c32} /var/lib/tftpboot/ [root@jie1 tftpboot]# cp /var/ftp/pub/centos-6.4-x86_64/p_w_picpaths/pxeboot/{initrd.img,vmlinuz} /var/lib/tftpboot/ [root@jie1 tftpboot]# cp /var/ftp/pub/centos-6.4-x86_64/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default [root@jie1 tftpboot]# chmod +w /var/lib/tftpboot/pxelinux.cfg/default [root@jie1 tftpboot]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ [root@jie1 tftpboot]# cat /var/lib/tftpboot/pxelinux.cfg/default default vesamenu.c32 #prompt 1 timeout 200 display boot.msg menu background splash.jpg menu title Welcome to CentOS 6.4 made by jie! 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 ks=ftp://192.168.22.1/pub/centos6.cfg 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 - [root@jie1 ~]# service dhcpd restart Shutting down dhcpd: [ OK ] Starting dhcpd: [ OK ] [root@jie1 ~]# chkconfig tftp on [root@jie1 ~]# service xinetd restart Stopping xinetd: [ OK ] Starting xinetd: [ OK ] [root@jie1 ~]# [root@jie1 ~]# service vsftpd restart Shutting down vsftpd: [ OK ] Starting vsftpd for vsftpd: [ OK ] [root@jie1 ~]# ss -tunlp | grep 67 udp UNCONN 0 0 *:67 *:* users:(("dhcpd",2898,7)) [root@jie1 ~]# ss -tunlp | grep 69 udp UNCONN 0 0 *:69 *:* users:(("xinetd",2976,5))
至此PXE Server的配置安裝過程已經完成,如今測試可否自動安裝。
PXE安裝必定程度的解決了自動化部署安裝操做系統,可是利用PXE安裝不一樣版本的操做系統,這會使得PXE很難用於實現,爲解決這一美中不足的缺陷cobbler應用而生,盡情期待cobbler自動化部署安裝不一樣版本的操做系統。
但願廣大博友多多指點,如看完此博客對PEX自動部署操做系統有疑問請給我留言或者發郵件到我郵箱,郵箱地址:7832@sina.cn