使用 PXE + TFTP +FTP + DHCP + Kickstart 服务可以搭建出一个无人值守安装系统,这种无人值守安装系统可以自动地为数十台服务器安装系统,从而将运维人员从重复性的工作中解放出来,提高了工作效率。在开始正式的环境搭建之前,先来了解一下使用到的相关服务程序。
1.PXE
PXE(Preboot eXecute Environment,预启动执行环境)是由 Intel 公司开发的技术,可以让计算机通过网络来启动操作系统(前提是计算机上安装的网卡支持 PXE 技术),主要用于在无人值守安装系统中引导客户端主机安装 Linux 操作系统。
2.SYSLinux
SYSLinux 是一个用于提供引导加载的服务程序。与其说 SYSLinux 是一个服务程序,不
如说更需要里面的引导文件,在安装好 SYSLinux 服务程序软件包后, /usr/share/syslinux 目录
中会出现很多引导文件。
3.TFTP
TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。端口号为69。
4.FTP(vsftpd)
vsftpd 是“very secure FTP daemon”的缩写,是一款在Linux发行版中最受推崇的FTP服务器程序。特点是小巧轻快,安全易用。
5.DHCP(这儿用dnsmasq代替,也就介绍介绍dnsmasq)
DNSmasq是一个小巧且方便地用于配置DNS和DHCP的工具,适用于小型网络,它提供了DNS功能和可选择的DHCP功能。它服务那些只在本地适用的域名,这些域名是不会在全球的DNS服务器中出现的。DHCP服务器和DNS服务器结合,并且允许DHCP分配的地址能在DNS中正常解析,而这些DHCP分配的地址和相关命令可以配置到每台主机中,也可以配置到一台核心设备中(比如路由器),DNSmasq支持静态和动态两种DHCP配置方式。
6.Kickstart
Kickstart 是一种无人值守的安装方式,其工作原理是预先把原本需要运维人员手工填写的参数保存成一个ks.cfg 文件,当安装过程中需要填写参数时则自动匹配 Kickstart 生成的文件。
下图为无人值守安装系统的工作流程:
在了解跟无人值守相关的服务程序后,下面开始搭建无人值守安装服务系统,为了更加直观的看到无人值守安装系统的效果,分别来搭建PXE远程安装和PXE+Kickstart无人值守安装来进行安装效果对比。
1.配置dnsmasq服务
安装dnsmasq
yum -y install dnsmasq
配置dnsmasq
mv /etc/dnsmasq.conf /etc/dnsmasq.conf.bak #备份原配置文件
vim /etc/dnsmasq.conf #打卡配置文件,在配置文件中写入如下内容
interface=ens33 # 使用的接口
domain=test # 定义的域名
dhcp-range= ens33,192.168.1.100,192.168.1.253,255.255.255.0,1h # dhcp的IP地址池
dhcp-boot=pxelinux.0,pxeserver,192.168.1.3 # 与启动的服务器地址
dhcp-option=3,192.168.1.3 # dhcp的网关
dhcp-option=6,192.168.1.3, 8.8.8.8 # 分发的dns地址
server=8.8.4.4 # dns转发地址
dhcp-option=28,192.168.1.255 # 局域网广播地址
dhcp-option=42,0.0.0.0 # 网络时间服务器
pxe-prompt="Press F8 for menu.", 60 # 指定f8按键
pxe-service=x86PC, "Install CentOS 7 from network server 192.168.1.3", pxelinux # 介绍以及安装选项
enable-tftp # 允许使用tftp
tftp-root=/var/lib/tftpboot # 设置tftp根目录
提示:在配置文件当中#号的注释信息可以去掉
2.配置TFTP服务程序
安装TFTP
yum -y install tftp-server
3.配置syslinux预启动服务程序
安装syslinux
yum -y install syslinux
把 SYSLinux 提供的引导文件复制到 TFTP 服务程序的默认目录中
cp -r /usr/share/syslinux/* /var/lib/tftpboot
将光盘镜像中自带的一些引导文件也复制到 TFTP 服务程序的默认目录中
mount /dev/cdrom /mnt
mkdir /var/lib/tftpboot/centos7
cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/centos7
cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/centos7
4.配置PXE服务
在 TFTP 服务程序的目录中新建 pxelinux.cfg 目录
mkdir /var/lib/tftpboot/pxelinux.cfg
编写配置文件
vim /var/lib/tftpboot/pxelinux.cfg/default
default menu.c32
prompt 0
timeout 300
ONTIMEOUT local
menu title ########## PXE Boot Menu ##########
label 1
menu label ^1) Install CentOS 7 x64 with Local Repo
kernel centos7/vmlinuz
append initrd=centos7/initrd.img method=ftp://192.168.1.3/pub devfs=nomount
label 2
menu label ^2) Install CentOS 7 x64 with http://mirror.centos.org Repo
kernel centos7/vmlinuz
append initrd=centos7/initrd.img method=http://mirror.centos.org/centos/7/os/x86_64/ devfs=nomount ip=dhcp
label 3
menu label ^3) Install CentOS 7 x64 with Local Repo using VNC
kernel centos7/vmlinuz
append initrd=centos7/initrd.img method=ftp://192.168.1.3/pub devfs=nomount inst.vnc inst.vncpassword=password
label 4
menu label ^4) Boot from local drive
5.配置FTP服务
yum -y install vsftpd
cp -r /mnt/* /var/ftp/pub/
chmod -R 755 /var/ftp/pub
6.关闭防火墙和SELinux并重启服务
systemctl stop firewalld
setenforce 0
systemctl restart dnsmasq
systemctl restart vsftpd
systemctl enable dnsmasq
systemctl enable vsftpd
7.配置客户端验证效果
提示:虚拟机内存要调成2GB或以上,否则在安装过程中会报错
安装过程:
选择1,等待安装
最后会出现如下画面,说明PXE远程安装成功
说明:PXE远程安装只是将原来光盘的方式换成了网络,整个过程需要有一个人在客户机前进行后续安装操作,而接下来要做的PXE+Kickstart无人值守安装,除去开机外,整个安装过程无需有人在客户前。
PXE+Kickstart无人值守安装只需在原来PXE远程安装的基础上进行修改和添加,具体操作如下:
1.将/root下的anacondaks.cfg复制到vsftpd 服务程序的工作目录中
cp ~/anaconda-ks.cfg /var/ftp/pub/ks.cfg
chmod +r /var/ftp/pub/ks.cfg #设置该文件的权限,确保所有人都有可读的权限
2.修改/ks.cfg文件
vim /var/ftp/pub/ks.cfg #修改如下内容
#version=DEVEL
install #开始安装
# Use CDROM installation media
url --url="ftp://192.168.1.3/pub/" #把光盘镜像安装方式修改成 FTP 协议
# System timezone
timezone Asia/Shanghai --isUtc #选择时区
# Partition clearing information
clearpart --all --initlabel #清空所有磁盘内容并初始化磁盘
reboot
3.调整dnsmasq文件
去除手段选择步骤
vim /etc/dnsmasq.conf
interface=ens33
domain=test
dhcp-range= ens33,192.168.1.100,192.168.1.253,255.255.255.0,1h
dhcp-boot=pxelinux.0,pxeserver,192.168.1.3
dhcp-option=3,192.168.1.3
dhcp-option=6,192.168.1.3, 8.8.8.8
server=8.8.4.4
dhcp-option=28,192.168.1.255
dhcp-option=42,0.0.0.0
# pxe-prompt="Press F8 for menu.", 60
# pxe-service=x86PC, "Install CentOS 7 from network server 192.168.1.3", pxelinux
enable-tftp
tftp-root=/var/lib/tftpboot
4.调整default文件
vim /var/lib/tftpboot/pxelinux.cfg/default
default ks
prompt 0
label ks
kernel centos7/vmlinuz
append ks=ftp://192.168.1.3/pub/ks.cfg initrd=centos7/initrd.img devfs=nomount
5.重启dnsmasq服务
systemctl restart dnsmasq
6.客户端验证
整个过程除了开机,无需做任何操作,直至安装完成。
提示:安全完成后使用root登录,root密码是服务器root密码