自动化运维之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

相关文章
相关标签/搜索