PXE批量部署的优点
规模化:同时装配多台服务器
自动化:安装系统,配置各种服务
预启动执行环境,在操作系统之前运行
可用于远程安装,构建无盘工作站
服务端
运行DHCP服务,用来分配地址,定位引导程序
引导程序:微代码,存放在TFTP服务器中
运行TFTP服务器,提供引导程序下载
TFTP服务器时UDP协议,端口号69
镜像文件存放在:vsftpd,TCP协议,端口号20,21
客户端
网卡支持PXE协议
主板支持网络启动
基本部署过程
TFTP服务及引导文件
DHCP服务的PXE设置
[root@localhost ~]#yum install dhcp -y
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
[root@localhost ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp: overwrite ‘/etc/dhcp/dhcpd.conf’? y
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
subnet 192.168.100.0 netmask 255.255.255.0 {
range 192.168.100.20 192.168.100.30;
option routers 192.168.100.100;
option domain-name-servers 6.6.6.6;
next-server 192.168.100.100; '指定TFTP服务器地址'
filename "pxelinux.0"; 'filename:指定要下载的引导程序文件'
}
[root@localhost ~]#systemctl start dhcpd
[root@localhost ~]#systemctl enable dhcpd
默认的启动菜单文件
创建/var/lib/tftpboot/pxelinux.cfg/default
最终创建的default文件输入内容
[root@localhost pxelinux.cfg]# vim default
default auto '确保pxelinux.cfg目录已存在'
prompt 1 '一秒后启动'
label auto '模式一'
kernel vmlinuz '内核vmlinuz'
append initrd=initrd.img method=ftp://192.168.100.100/centos7 'append :追加,紧接着初始化镜像文件 方法=路径'
label linux text '模式二'
kernel vmlinuz
append text initrd=initrd.img method=ftp://192.168.100.100/centos7 '文本模式安装'
label linux rescue '模式三'
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://192.168.100.100/centos7 '进入救援模式'
PXE自动部署步骤总结
1.设置双网卡,
2.设置DHCP,用来自动获取IP地址,引导定位TFTP位置
next-server TFTP IP
filename “pxelinux.0”
3.设置TFTP(先安装tftp-server并设置)
为客户机安装系统
使用VMware软件中centos 7系统
第一步,在服务器设置双网卡
在centos 7添加一个网络适配器,并设置为仅主机模式。 '用来装机,做服务器的网卡'
原本的网络适配器保持NAT模式不变。 '用来安装yum包'
第二步,设置添加的网卡IP地址,关闭防火墙
[root@localhost ~]# cd /etc/sysconfig/network-scripts
[root@localhost network-scripts]# cp -p ifcfg-ens33 ifcfg-ens36
[root@localhost network-scripts]# ls
[root@localhost network-scripts]# vim ifcfg-ens36
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens36"
UUID="fe60a0ac-7d04-46a3-b29c-633a50b88f33" 'UUDI删除掉'
DEVICE="ens36"
ONBOOT="yes"
IPADDR=192.168.100.100
NETMASK=255.255.255.0
GATEWAY=192.168.100.1
[root@localhost network-scripts]# systemctl restart network
[root@localhost network-scripts]# ifconfig '发现设置成功'
[root@localhost network-scripts]# systemctl stop firewalld.service
[root@localhost network-scripts]# setenforce 0
第三步,设置DHCP服务
[root@localhost ~]#yum install dhcp* -y
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
[root@localhost ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp: overwrite ‘/etc/dhcp/dhcpd.conf’? y
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
subnet 192.168.100.0 netmask 255.255.255.0 {
range 192.168.100.20 192.168.100.30;
option routers 192.168.100.100;
option domain-name-servers 6.6.6.6;
next-server 192.168.100.100; '指定TFTP服务器地址'
filename "pxelinux.0"; 'filename:指定要下载的引导程序文件'
}
第四步:设置TFTP–配置安装tftp-server
[root@localhost ~]# yum install tftp-server -y
[root@localhost ~]# rpm -ql tftp-server
/etc/xinetd.d/tftp '配置文件'
/usr/lib/systemd/system/tftp.service
/usr/lib/systemd/system/tftp.socket
/usr/sbin/in.tftpd
/usr/share/doc/tftp-server-5.2
/usr/share/doc/tftp-server-5.2/CHANGES
/usr/share/doc/tftp-server-5.2/README
/usr/share/doc/tftp-server-5.2/README.security
/usr/share/man/man8/in.tftpd.8.gz
/usr/share/man/man8/tftpd.8.gz
/var/lib/tftpboot '站点'
[root@localhost network-scripts]# vim /etc/xinetd.d/tftp '编辑配置文件'
disable = no '将此改成no'
[root@localhost network-scripts]# cd /var/lib/tftpboot '进入站点'
[root@localhost tftpboot]# ls
第五步:安装并设置syslinux
[root@localhost tftpboot]# yum install syslinux -y '安装syslinux'
[root@localhost tftpboot]# rpm -ql syslinux | grep pxelinux.0
/usr/share/syslinux/gpxelinux.0
/usr/share/syslinux/pxelinux.0
[root@localhost tftpboot]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot '将syslinux中的pxelinux.0复制过来'
[root@localhost tftpboot]# ls
pxelinux.0
[root@localhost tftpboot]# yum install vsftpd -y
[root@localhost tftpboot]# rpm -ql vsftpd '查看站点'
...省略内容
/var/ftp
/var/ftp/pub
[root@localhost tftpboot]# mkdir /var/ftp/centos7 '创建centos7目录用来挂载'
[root@localhost tftpboot]# cd /var/ftp
[root@localhost ftp]# ls
centos7 pub
[root@localhost ftp]# ls centos7 '发现镜像文件中没有东西'
'挂载之前先点击已连接'
[root@localhost ftp]# mount /dev/sr0 /var/ftp/centos7/ '挂载'
mount: /dev/sr0 is write-protected, mounting read-only
[root@localhost ftp]# df -hT
[root@localhost ftp]# ls centos7 '再次查看centos7文件,发现有了内容'
CentOS_BuildTag EULA images LiveOS repodata RPM-GPG-KEY-CentOS-Testing-7
EFI GPL isolinux Packages RPM-GPG-KEY-CentOS-7 TRANS.TBL
第六步,在镜像中复制出文件
[root@localhost ftp]# cd centos7/images
[root@localhost images]# cd pxeboot
[root@localhost pxeboot]# ls '发现目标文件,准备复制'
initrd.img TRANS.TBL vmlinuz
[root@localhost pxeboot]# cp vmlinuz initrd.img /var/lib/tftpboot/ '将文件复制到tftp站点中'
[root@localhost pxeboot]# ls /var/lib/tftpboot
initrd.img pxelinux.0 vmlinuz
第七步,设置默认配置文件
[root@localhost pxeboot]# cd /var/lib/tftpboot
[root@localhost tftpboot]# ls
initrd.img pxelinux.0 vmlinuz
[root@localhost tftpboot]# mkdir pxelinux.cfg '创建pxelinux配置文件'
[root@localhost tftpboot]# cd pxelinux.cfg/
[root@localhost pxelinux.cfg]# vim default '创建默认配置文件'
'输入以下内容'
default auto
prompt 1
label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.100.100/centos7
label linux text
kernel vmlinuz
append text initrd=initrd.img method=ftp://192.168.100.100/centos7
label linux rescue
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://192.168.100.100/centos7
[root@localhost pxelinux.cfg]#systemctl start dhcpd
[root@localhost pxelinux.cfg]#systemctl start tftp
[root@localhost pxelinux.cfg]#systemctl start vsftpd
kickstart无人值守技术
应答文件的来源
1、服务器添加双网卡(NAT和仅主机)
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# ls
ifcfg-ens33 ifdown-bnep ifdown-ipv6 ifdown-routes ifdown-tunnel ifup-eth ifup-isdn ifup-ppp ifup-TeamPort network-functions
ifdown-eth ifdown-isdn ifdown-sit ifup ifup-ib ifup-plip ifup-routes ifup-tunnel network-functions-ipv6
ifcfg-lo ifdown-ib ifdown-post ifdown-Team ifup-aliases ifup-ippp ifup-plusb ifup-sit ifup-wireless
ifdown ifdown-ippp ifdown-ppp ifdown-TeamPort ifup-bnep ifup-ipv6 ifup-post ifup-Team init.ipv6-global
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens37(以原有网卡为模板配置新的网卡)
[root@localhost network-scripts]# vim ifcfg-ens37
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens37
DEVICE=ens37
ONBOOT=yes
IPADDR=192.168.100.100 '以自己为网关,所以不设网关'
NETMASK=255.255.255.0
[root@localhost network-scripts]# systemctl restart network
2、安装并启用DHCP服务为裸机分配IP
[root@localhost ~]# yum install -y dhcp*
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
subnet 192.168.100.0 netmask 255.255.255.0 {
range 192.168.100.128 192.168.100.200;
option routers 192.168.100.100;'服务器网卡作为网关使用'
option domain-name-servers 8.8.8.8;
next-server 192.168.100.100;'tftp服务IP地址'
filename "pxelinux.0"; '指向TFTP服务'
}
3、安装pxelinux.0的软件包
[root@localhost ~]# yum install -y syslinux
[root@localhost ~]# rpm -ql syslinux |grep pxelinux.0
/usr/share/syslinux/gpxelinux.0
/usr/share/syslinux/pxelinux.0
4、安装tftp-server服务快速加载引导程序
[root@localhost ~]# yum install -y tftp-server
[root@localhost ~]# rpm -ql tftp-server
/etc/xinetd.d/tftp'主配置文件'
/usr/lib/systemd/system/tftp.service
/usr/lib/systemd/system/tftp.socket
/usr/sbin/in.tftpd
/usr/share/doc/tftp-server-5.2
/usr/share/doc/tftp-server-5.2/CHANGES
/usr/share/doc/tftp-server-5.2/README
/usr/share/doc/tftp-server-5.2/README.security
/usr/share/man/man8/in.tftpd.8.gz
/usr/share/man/man8/tftpd.8.gz
/var/lib/tftpboot'站点文件目录'
[root@localhost ~]# vim /etc/xinetd.d/tftp
disable= no'开启tftp服务'
5、安装ftp服务,挂载镜像
[root@localhost ~]# yum install -y vsftpd
[root@localhost ~]# cd /var/ftp/
[root@localhost ftp]# mkdir centos7
[root@localhost ftp]# mount /dev/cdrom /var/ftp/centos7/
6、在tftp站点上配置四大文件
[root@localhost ~]# cd /var/lib/tftpboot/
[root@localhost tftpboot]# cp /usr/share/syslinux/pxelinux.0 ./
[root@localhost images]# cd /var/ftp/centos7/images/pxeboot/
[root@localhost pxeboot]# cp -r initrd.img vmlinuz /var/lib/tftpboot/
[root@localhost tftpboot]# mkdir pxelinux.cfg
[root@localhost tftpboot]# cd pxelinux.cfg/
[root@localhost pxelinux.cfg]# ls
[root@localhost pxelinux.cfg]# vim default '这个配置文件中的需要自己写'
default auto
prompt 1
label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.100.100/centos7
label linux text
kernel vmlinuz
append text initrd=initrd.img method=ftp://192.168.100.100/centos7
label linux rescue
kernel vmlinuz
apptend rescue initrd=initrd.img method=ftp://192.168.100.100/centos7
[root@localhost tftpboot]# ls
initrd.img pxelinux.0 pxelinux.cfg vmlinuz
7、创建应答文件
[root@localhost ~]# yum install -y system-config-kickstart
分区信息:
/boot 1024M
/home 4096M
/swap 4096M
/ 剩余空间都分配给他
把创建好的ks-cfg文件放在ftp站点上
点击左上角的文件保存—文件系统----var----ftp
9、复制服务器上ks.cfg文件中的安装包到kickstart的ks.cfg中
[root@localhost ~]# ls
anaconda-ks.cfg initial-setup-ks.cfg 公共 模板 视频 图片 文档 下载 音乐 桌面
[root@localhost ~]# vim anaconda-ks.cfg '服务器系统的软件包作为模板,对照'
%packages
@^gnome-desktop-environment
@base
@core
@desktop-debugging
@development
@dial-up
@directory-client
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@input-methods
@internet-browser
@java-platform
@multimedia
@network-file-system-client
@networkmanager-submodules
@print-client
@x11
chrony
kexec-tools
%end
[root@localhost ~]# vim /var/ftp/ks.cfg
'把上面的软件包粘贴在这个文件最末尾'
10、修改tftp站点中default文件
[root@localhost ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
default auto
prompt 1
label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.100.100/centos7 ks=ftp://192.168.100.100/ks.cfg
'ks指向ftp服务站点ks.cfg文件'
11、关闭防护防火墙,启动三大服务
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
setenforce: SELinux is disabled
[root@localhost ~]# systemctl restart network
[root@localhost ~]# systemctl start dhcpd
[root@localhost ~]# systemctl start tftp
[root@localhost ~]# systemctl start vsftpd
【1】DHCP服务:让客户端获取IP地址,能主动联网PXE服务器,配置指向TFTP服务
【2】TFTP服务:简单文件系统,UDP协议端口号69,快速加载引导程序,默认配置文件指向FTP镜像位置
【3】FTP服务:文件系统镜像存放,TCP21端口连接服务UDP20端口数据传输
【1】default:需要先创建pxelinux.cfg目录,引导配置文件被加载
【2】vmlinuz:压缩内核,在default中被定义最先被加载
【3】initrd.img:初始化镜像文件,在default被定义第二个被加载
【4】pxelinux.0:引导程序,需要安装syslinux包才会有,在dhcp配置文件中被定义
【1】主配置文件:/etc/xinetd.d/tftp
【2】站点:/var/lib/tftpboot/
/var/ftp/