PXE概述
PXE 的全称是preboot execute environment它其实是Intel在很久以前提出来的一项用于通过网络来引导系统的标准。允许客户机通过网络从远程服务器上下载引导镜像,并加载安装文件或者整个操作系统
PXE批量部署优点
- 规模化:同时装配多台服务器
- 自动化:安装系统,配置各种服务
- 远程实现:不需要光盘、U盘等安装介质
环境准备
一台Linux服务器
IP地址:192.168.221.131
关闭防火墙和selinux
systemctl stop firewalld #关闭防火墙
setenforce 0 #关闭selinux
安装FTP服务,准备CentOS7安装源
yum -y install vsftpd #安装FTP服务
mkdir /var/ftp/CentOS7 #在FTP根目录创建文件,存放CentOS7安装源
mount /dev/cdrom /var/ftp/CentOS7/ #将CentOS7光盘挂载到这个目录
systemctl start vsftpd #启动FTP服务
systemctl enable vsftpd #设置开机自启动
安装TFTP服务
TFTP(Trivial File Transfer Protocol)是一种简单的文件传输协议,它主要用于在客户机与服务器之间进行小文件的传输1。TFTP基于UDP协议实现,因此不具备通常FTP的许多功能
yum -y install tftp-server #安装TFTP服务
vi /etc/xinetd.d/tftp #编辑配置文件,将disable的值改为no
##################################################################################
service tftp
{
socket_type = dgram #表示这个服务使用数据报套接字(UDP)
protocol = udp #明确指定协议为 UDP
wait = no #表示可以多台客户机一起连接
user = root #服务将以 root 用户的身份运行
server = /usr/sbin/in.tftpd #这是 TFTP 服务器的路径
server_args = -s /var/lib/tftpboot #指定了 TFTP 的根目录
disable = no #yes为禁用服务,启用需要改为no
per_source = 11
cps = 100 2
flags = IPv4 #表示服务只接受Ipv4连接
}
##################################################################################
systemctl start tftp #启动服务
systemctl enable tftp #设置开机自启动
准备Linux系统的内核文件和初始化镜像文件(Linux引导加载模块)
cd /var/ftp/CentOS7/images/pxeboot/ #这里已经把光盘挂载到这里了
cp vmlinuz /var/lib/tftpboot/ #复制Linux系统的内核文件到TFTP根目录
cp initrd.img /var/lib/tftpboot/ #复制初始化镜像文件(Linux引导加载模块)到TFTP根目录
安装DHCP服务
我这里使用的是VMware虚拟机,所以要关闭自带的DHCP
左上角编辑——>虚拟网络编辑器——>打开的窗口右下角更改设置——>点击VMnet8
yum -y install dhcp #安装DHCP
#复制DHCP配置文件模板到DHCP配置文件
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
vi /etc/dhcp/dhcpd.conf #编辑DHCP配置文件,在26行添加
##################################################################################
subnet 192.168.221.0 netmask 255.255.255.0 { #网段和子网掩码
range 192.168.221.20 192.168.221.30; #设置IP地址分配范围
option routers 192.168.221.2; #网关
next-server 192.168.221.131; #指定服务器地址
filename "pxelinux.0"; #指定PXE引导程序文件名
}
##################################################################################
systemctl start dhcpd #启动DHCP服务
systemctl enable dhcpd #设置开机自启动
安装PXE引导程序
yum -y install syslinux #安装PXE引导程序
#把PXE引导程序路径复制到TFTP根目录下
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
配置启动菜单文件
在PXE远程部署中,启动菜单配置文件默认放在TFTP根目录下的pxelinux.cfg子目录default文件中,这里使用ls命令会发现没有这个文件,所以需要我们自己创建
mkdir /var/lib/tftpboot/pxelinux.cfg #创建pxelinux.cfg目录
#创建并编辑配置文件default
vi /var/lib/tftpboot/pxelinux.cfg/default
##################################################################################
default auto #指定默认入口名称
prompt 1 #设置是否等待用户选择,“1”表示等待用户控制
label auto #图形安装(默认)引导入口,label 用来定义启动项
kernel vmlinuz #kernel 和 append用来定义引导参数
append initrd=initrd.img method=ftp://192.168.221.131/CentOS7
label linux text #文本安装引导入口
kernel vmlinuz
append text initrd=initrd.img method=ftp://192.168.221.131/CentOS7
label linux rescue #救援模式引导入口
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://192.168.221.131/CentOS7
##################################################################################
验证PXE远程部署是否成功
1.新建一台虚拟机,这里安装源是CentOS7,所以系统版本也要选择一致
2.新建完成后不用设置镜像,直接打开即可
3.在boot后输入auto或者直接按回车
4.出现这个页面即代表成功
安装Kictstart
在配置PXE的虚拟机上安装kickstart,实现无人值守安装
yum -y install system-config-kickstart #安装kickstart
system-config-kickstart #执行应用程序
配置Kickstart
基本配置(时区使用默认或者自己选择)
安装方法
引导装载程序选项
分区信息
网络配置,添加ens33,网络类型DHCP
防火墙配置
安装后脚本
这里是系统安装之后自动执行的Linux命令,根据需要自己填写,这里在根目录下创建一个文件看一下效果
保存,然后直接关闭窗口即可停止运行
现在配置需要安装的软件包
这时会发现多了一个ks.cfg的文件,然后配置安装脚本
根据需要将anaconda-ks.cfg文件中的安装脚本复制到ks.cfg文件中,从%packages复制到%end,复制到ks.cfg文件末尾
vi anaconda-ks.cfg
如果要最小化安装,复制下面内容即可
%packages @^minimal %end
复制ks.cfg到FTP根目录,然后编辑启动菜单文件,添加ks引导参数
cp ks.cfg /var/ftp/ #复制到FTP根目录
vi /var/lib/tftpboot/pxelinux.cfg/default #编辑启动菜单文件
#添加ks引导参数
ks=ftp://192.168.221.131/ks.cfg
然后重新启动那台新建的虚拟机就会自动开始安装了
安装完成等待重启后,使用root用户登录,密码就是前面自己设置的密码,然后查看根目录下有一个test目录,就是刚刚写的安装后脚本执行的,我这里安装的是最小化