第19章:使用 PXE+Kickstart 无人值守安装服务
刚入职的运维新手经常会被要求去做一些安装Linux系统的工作。如果按照第 1 章中所讲解的“用光盘镜像来安装Linux操作系统”,其效率会相当低下。
本章将介绍可以实现无人值守安装服务的PXE+Kickstart 服务程序,并带领大家动手安装部署 PXE + TFTP + FTP + DHCP + Kickstart 等服务程序,从而搭建出一套可以批量安装 Linux 系统的无人值守安装系统。在学完本章内容之后,运维新手就可以避免枯燥乏味的重复性工作,大大提升Linux系统安装的效率。
一、无人值守安装系统
1、为什么需要无人值守安装系统?
使用光盘镜像来安装 Linux 系统,坦白讲,该方法适用于只安装少量 Linux 系统的情况。如果生产环境中有数百台服务器都需要安装系统,这种方式就不合时宜了。
这时,我们就需要使用 PXE + TFTP +FTP + DHCP + Kickstart 服务搭建出一个无人值守安装系统。这种无人值守安装系统可以自动地为数十台服务器安装系统,这一方面将运维人员从重复性的工作中解救出来,也大大提升了系统安装的效率。
2、无人值守安装系统的工作流程
工作流程3、什么是 PXE ?
PXE(Preboot eXecute Environment,预启动执行环境)是由 Intel 公司开发的技术,可以让计算机通过网络来启动操作系统(前提是计算机上安装的网卡支持 PXE 技术),主要用于在无人值守安装系统中引导客户端主机安装 Linux 操作系统。
4、什么是 Kickstart ?
Kickstart 是一种无人值守的安装方式,其工作原理是预先把原本需要运维人员手工填写的参数保存成一个ks.cfg 文件,当安装过程中需要填写参数时则自动匹配 Kickstart 生成的文件。
所以只要Kickstart 文件包含了安装过程中需要人工填写的所有参数,那么从理论上来讲完全不需要运维人员的干预,就可以自动完成安装工作。
TFTP、FTP 以及 DHCP 服务程序的配置与部署,在前面章节中已经详细讲解过,这里不再赘述。
5、数据资源如何传输到客户端主机上?
由于当前的客户端主机并没有完整的操作系统,也就不能完成 FTP 协议的验证了,所以需要使用 TFTP 协议帮助客户端获取引导及驱动文件。
vsftpd 服务程序用于将完整的系统安装镜像通过网络传输给客户端。当然,只要能将系统安装镜像成功传输给客户端即可,因此也可以使用 httpd 来替代 vsftpd 服务程序。
二、部署无人值守安装服务
1、配置 DHCP 服务程序
DHCP 服务程序用于为客户端主机分配可用的 IP 地址,而且这是服务器与客户端主机进行文件传输的基础,因此我们先行配置 DHCP 服务程序。
1)配置“无人值守系统”服务端的 IP 为 192.168.10。并关闭虚拟机自身的 DHCP 服务,避免虚拟机自带的 DHCP 服务对我们手动部署的 DHCP 服务造成干扰。
nmtui 关闭虚拟机自带的DHCP服务2)安装 DHCP 服务程序包
yum install dhcp
3)配置 dhcpd 服务
允许了 BOOTP 引导程序协议,旨在让局域网内暂时没有操作系统的主机也能获取静态 IP地址;在配置文件的最下面加载了引导驱动文件 pxelinux.0(这个文件会在下面的步骤中创建),其目的是让客户端主机获取到 IP 地址后主动获取引导驱动文件,自行进入下一步的安装过程。
vim /etc/dhcp/dhcpd.conf
systemctl restart dhcpd
systemctl enable dhcpd
/etc/dhcp/dhcpd.conf
2、配置 TFTP 服务程序
在前面章节中我们已经学习过 vsftpd服务 和 TFTP 服务。vsftpd 是一款功能丰富的文件传输服务程序,允许用户以匿名开放模式、本地用户模式、虚拟用户模式来进行访问认证。但是,当前的客户端主机还没有安装操作系统,该如何进行登录认证呢?
而 TFTP 作为一种基于 UDP 协议的简单文件传输协议,不需要进行用户认证即可获取到所需的文件资源。接下来配置 TFTP 服务程序,为客户端主机提供引导及驱动文件。当客户端主机有了基本的驱动程序之后,再通过 vsftpd 服务程序将完整的光盘镜像文件传输过去。
1)安装 TFTP 服务程序包
yum install tftp-server
2)关于 xinetd 服务
TFTP 是一种非常精简的文件传输服务程序,它的运行和关闭是由 xinetd 网络守护进程服务来管理的。xinetd 服务程序会同时监听系统的多个端口,然后根据用户请求的端口号调取相应的服务程序来响应用户的请求。
3)配置 TFTP 服务程序(xinetd 服务)
开启 TFTP 服务程序,只需在 xinetd 服务程序的配置文件中把 disable 参数改成 no 就可以了。
vim /etc/xinetd.d/tftp
systemctl restart xinetd
systemctl enable xinetd
/etc/xinetd.d/tftp
4)修改 firewall 防火墙策略
TFTP 服务程序默认使用的是 UDP 协议,占用的端口号为 69,所以在生产环境中还需要在 firewalld 防火墙管理工具中写入使其永久生效的允许策略,以便让客户端主机顺利获取到引导文件。
firewall-cmd --permanent --add-port=69/udp
firewall-cmd --reload
3、配置 SYSLinux 服务程序
1)关于 SYSLinux 服务程序
SYSLinux 是一个用于提供引导加载的服务程序。与其说 SYSLinux 是一个服务程序,不如说我们更需要它里面的引导文件,在安装好 SYSLinux 服务程序软件包后,/usr/share/syslinux 目录中会出现很多引导文件。
2)安装 SYSLinux 服务程序
yum install syslinux
3)提取引导文件至 TFTP 服务的默认目录中去
我们需要把 SYSLinux 提供的引导文件(即上述提到的文件 pxelinux.0)复制到 TFTP 服务程序的默认目录中,这样客户端主机就能够顺利地获取到引导文件了。
另外在 RHEL7 系统光盘镜像中也有一些我们需要调取的引导文件。在确认光盘镜像已经被挂载到/media/cdrom 目录后,使用 cp 命令将光盘镜像中自带的一些引导文件也复制到 TFTP 服务程序的默认目录中。
cd /var/lib/tftpboot
cp /usr/share/syslinux/pxelinux.0 .
cp /media/cdrom/images/pxeboot/{vmlinuz,initrd.img} .
cp /media/cdrom/isolinux/{vesamenu.c32,boot.msg} .
4)提取开机菜单文件并进行相关配置
在 TFTP 服务程序的目录中新建 pxelinux.cfg 目录,虽然该目录的名字带有后缀,但依然也是目录。将系统光盘中的开机选项菜单复制到该目录中,并命名为 default,这个 default 文件就是开机时的选项菜单。
cd /var/lib/tftpboot
mkdir pxelinux.cfg
cp /media/cdrom/isolinux/isolinux.cfg ./pxelinux.cfg/default
开机选项菜单界面
默认的开机菜单中有两个选项,要么是安装系统,要么是对安装介质进行检验。既然我们已经确定采用无人值守的方式来安装Linux系统,现在我们来编辑这个 default 文件:
vim cd /var/lib/tftpboot/pxelinux.cfg/default
编辑开机菜单文件
把第 1 行的 default 参数修改为 linux,这样系统在开机时就会默认执行那个名称为 linux 的选项了。
在 64 行,我们把默认的光盘镜像安装方式修改成 FTP 文件传输方式,并指定好光盘镜像的获取地址以及 Kickstart 应答文件的获取路径。
4、配置 vsftpd 服务程序
在我们这套无人值守安装系统的服务中,光盘镜像资源是通过 FTP 协议传输的,因此势必要用到 vsftpd 服务程序。
当然,也可以使用 httpd 服务程序来提供 Web 网站访问的方式,只要能确保将光盘镜像顺利传输给客户端主机即可。如果打算使用 Web 网站服务来提供光盘镜像,一定记得将上述 /var/lib/tftpboot/pxelinux.cfg/default 配置文件中的光盘镜像获取网址和 Kickstart 应答文件获取网址修改一下。
1)安装 vsftpd 服务程序包
yum install vsftpd
systemctl restart vsftpd
systemctl enable vsftpd
在配置文件修改正确之后,一定将相应的服务程序添加到开机启动项中,这样无论是在生产环境中还是在红帽认证考试中,都可以在设备重启之后依然能提供相应的服务。
2)提取光盘镜像资源至 vsftpd 服务的工作目录中
在确认系统光盘镜像已经正常挂载到/media/cdrom 目录后,把目录中的光盘镜像文件全部复制到 vsftpd 服务程序的工作目录中。这个过程大约需要 3~5 分钟。
cp -r /media/cdrom/* /var/ftp
3)修改 firewalld 防火墙策略
在 firewalld 防火墙管理工具中写入“使 FTP 协议永久生效”的允许策略,然后在 SELinux 中放行 FTP 传输。
firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload
setsebool -P ftpd_connect_all_unreserved=on
5、创建 KickStart 应答文件
1)关于“无人值守安装Linux系统”的进一步理解
使用 PXE + Kickstart 部署的是一套“无人值守安装系统服务”,而不是“无人值守传输系统光盘镜像服务”,因此还需要让客户端主机能够一边获取光盘镜像,还能够一边自动帮我们填写好安装过程中出现的选项。
简单来说,如果生产环境中有 100 台服务器,它们需要安装相同的系统环境,那么在安装过程中单击的按钮和填写的信息也应该都是相同的。那么,为什么不创建一个类似于备忘录的需求清单呢?这样,在无人值守安装系统时,可以从这个需求清单中找到相应的选项值,从而免去了手动输入之苦,更重要的是,也彻底解放了人的干预,彻底实现无人值守自动安装系统,而不是单纯地传输系统光盘镜像。
2)关于 Kickstart 文件
Kickstart 其实并不是一个服务程序,而是一个应答文件。Kickstart 应答文件中包含了系统安装过程中需要使用的选项和参数信息,系统可以自动调取这个应答文件的内容,从而彻底实现了无人值守安装系统。
3)获取 Kickstart 应答文件
那么,该去哪里找到这个 Kickstart 文件呢?其实在 root 管理员的家目录中有一个名为 anaconda-ks.cfg 的文件,它就是应答文件。
下面把这个应答文件复制到 vsftpd 服务程序的工作目录中(在开机选项菜单的配置文件中已经定义了该文件的获取路径,也就是 vsftpd 服务程序数据目录中的 pub 子目录中)。
再使用 chmod 命令设置该文件的权限,确保所有人都有可读的权限,以保证客户端主机可以顺利获取到应答文件及里面的内容。
cp ~/anaconda-ks.cfg /var/ftp/pub/ks.cfg
chmod +r /var/ftp/pub/ks.cfg
4)配置 Kickstart 应答文件
/var/ftp/pub/ks.cfg如果觉得系统默认自带的Kickstart 应答文件参数较少,不能满足生产环境的需求,则可以通过 Yum软件仓库来安装 system-config-kickstart 软件包。这是一款图形化的 Kickstart 应答文件生成工具,可以根据自己的需求生成自定义的 Kickstart应答文件,然后把生成的文件放到/var/ftp/pub 目录中并将其名字修改为 ks.cfg 即可。
三、测试 “PXE + Kickstart 无人值守安装系统” 服务
上述我们已经完成了 PXE + Kickstart 无人值守安装系统的服务,现在就可以使用它来为客户端主机安装 Linux 系统了。
下面我们在客户端主机上安装 VM 虚拟机,在虚拟机环境中测试“192.168.10.10服务器上的无人值守安装系统”服务。
1)第1步:先把客户端主机的虚拟机的网卡模式设定成与服务端一致的“仅主机模式”,否则两台主机之间将无法进行通信。客户端主机的硬件配置选项并没有强制性要求。
2)第2步:在客户端的虚拟机中点击“新建虚拟机向导”,选择“典型(推荐)”模式来安装。
新建虚拟机向导3)第3步:把虚拟机操作系统的安装来源设置为“稍后安装操作系统”,这样做的目的是让虚拟机从网络中(192.168.10.10服务端)获取Linux系统安装镜像资源。
稍后安装操作系统4)第4步:指定将要安装的操作系统的类型为 " Linux -> RedHat Enterprise Linux 7 64位";指定系统在本地主机上的安装路径;自定义虚拟机的系统名称;指定系统要使用多大的磁盘容量,比如20G。
设置待安装系统的相关参数5)第5步:自定义硬件,把将要安装的Linux系统的“网络适配器”设备设置为“仅主机模式”(这个步骤非常重要),然后单击“确定”按钮。
修改“网络适配器”为“仅主机模式”至此,用于测试的客户端主机(虚拟机)和“PXE + Kickstart 无人值守安装系统”服务端都已经准备好了。
6)第6步:开始自动为客户端主机(测试用的虚拟机)安装Linux系统
在生产环境中,只需要将配置好的“PXE + Kickstart 无人值守安装系统”服务器上架,接通服务器和客户端主机之间的网线,然后启动客户端主机(测试用的虚拟机)即可。
接下来就会自动开始传输光盘镜像文件,并进行自动安装了。期间完全无须人工干预,直到安装完毕时才需要运维人员进行简单的初始化工作。
启动测试用的虚拟机 自动安装过程可见,当生产环境工作中有数百台服务器需要批量安装Linux系统时,使用无人值守安装系统是非常有必要的。
本章复习题
复习题1 复习题2本章 END 2019-01-17
网友评论