自動化運維之PXE網絡安裝系統實戰

自動化運維之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

113448965.png

113503159.png113515598.png

113531760.png

113628392.png

113631679.png

113635772.png

113638981.png

133045412.png

而後點擊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的配置安裝過程已經完成,如今測試可否自動安裝。

121354836.png

121401430.png

123812471.png


PXE安裝必定程度的解決了自動化部署安裝操做系統,可是利用PXE安裝不一樣版本的操做系統,這會使得PXE很難用於實現,爲解決這一美中不足的缺陷cobbler應用而生,盡情期待cobbler自動化部署安裝不一樣版本的操做系統。

但願廣大博友多多指點,如看完此博客對PEX自動部署操做系統有疑問請給我留言或者發郵件到我郵箱,郵箱地址:7832@sina.cn

相關文章
相關標籤/搜索