本章将学习用来实现无人值守安装服务的 PXE + Kickstart 服务程序,其中包括安装部署 PXE + TFTP + FTP + DHCP +
Kickstart 等服务程序,从而搭建出一套可批量安装 Linux 系统的无人值守安装系统。可以避免枯燥乏味的重复性工作,大大提高系统安装的效率。
19.1 无人值守系统
如果生产环境中有数百台服务器都需要安装系统,或者经常需要搭建各种群集测试系统,传统的单独安装就太没效率了;因此可使用 PXE + TFTP + FTP + DHCP + Kickstart 服务搭建出一个无人值守安装系统,这种无人值守安装系统可以自动地为数十台甚至上百台的服务器安装系统,大大提升了运维人员系统安装的效率。
无人值守安装系统的工作流程如图。
PXE(Preboot eXecute Environment,预启动执行环境)是由 Intel 公司开发的技术,能够让计算机通过网络来启动操作系统(前提是计算机上安装的网卡支持 PXE 技术),主要用于在无人值守安装系统中引导客户端主机安装 Linux 操作系统。Kickstart 是一种无人值守的安装方式,其工作原理是预先把原本需要运维人员手工填写的参数保存成一个 ks.cfg 文件,当安装过程中需要填写参数时则自动匹配 Kickstart 生成的文件。TFTP、FTP 以及 DHCP 服务程序的配置与部署已经在第 11 章和第 14章学习过,这里不再赘述。
由于当前的客户端主机并没有完整的操作系统,也就不能完成 FTP 协议的验证,所以需要使用 TFTP 协议帮助客户端获取引导及驱动文件。vsftpd 服务程序用于将完整的系统安装镜像通过网络传输给客户端,因此也可以使用 httpd 来替代 vsftpd 服务程序。
19.2 部署相关服务程序
部署会涉及多种服务器程序,这些服务器以及作用如图所示。其中某些服务的配置过程在前面的 11 和 14 章节中有详细的介绍,我们可以返回到前面的章节进行回顾理清思路。
19.2.1 配置 DHCP 服务程序
DHCP 服务程序用于为客户端主机分配可用的 IP 地址,IP 是服务器与客户端进行文件传输的基础,因此要先配置 DHCP 服务程序。但要关闭虚拟机自身的 DHCP 服务,避免与我们配置的 DHCP 冲突,手动设置无人值守系统服务器的 IP 地址 192.168.187.128。
除了上面提及的服务之外,PXE + KickStart 无人值守安装系统还会用到诸如 sips、slp、mountd 等多项相关的服务协议,因此本实验会临时关闭 firewalld 防火墙,以便数据能够正常地传送。配置好本地 yum 仓库就可用安装DHCP服务了。
我们在 DHCP 配置文件 /etc/dhcp/dhcpd.conf 写入的内容与第 14 章中的配置文件有两个主要区别:允许了 BOOTP 引导程序协议,旨在让局域网内暂时没有操作系统的主机也能获取静态 IP 地址;在配置文件的最下面加载了引导驱动文件 pxelinux.0(这个文件会在其他程序引用过来),其目的是让客户端主机获取到 IP 地址后主动获取引导驱动文件,自动进入下一步的安装过程。
配置保存后重新启动 HTTP 服务程序,并将其添加到开机启动项中。RHEL 8 系统中存在一些“讨厌”的情况,在参数错误时导致服务启动失败,但有时却不会在屏幕上显示报错信息。因此可以在启动 dhcpd 后查看一下服务状态,以免后续实验中客户端分配不到 IP 地址。若输出状态为“active (running)
”则表示服务已经正常运行。
19.2.2 配置 TFTP 服务程序
vsftpd 是一款功能丰富的文件传输服务程序,允许用户以匿名开放模式、本地用户模式、虚拟用户模式来进行访问认证。我们当前的客户端主机还没有安装操作系统,该如何进行登录认证呢?
TFTP 作为一种基于
UDP 协议的简单文件传输协议,不需要进行用户认证即可获取到所需的文件资源,但缺点是速度慢,因此接下来配置 TFTP 服务程序,为客户端主机提供引导及驱动文件;当客户端主机有了基本的驱动程序之后,再通过 vsftpd 服务程序将完整的光盘镜像文件传输过去。
TFTP 服务的运行和关闭是由 xinetd 网络守护进程服务来管理的,xinetd 服务程序会同时监听系统的多个端口,然后根据用户请求的端口号调取相应的服务程序来响应用户的请求。需要开启 TFTP 服务则需在 xinetd 服务程序的配置文件 /etc/xinetd.d/tftp
中把 disable 参数改成 no 就可以了。如果配置文件不存在则手动创建,配置信息如下。
确认配置信息无误后保存并退出,然后重启 xinetd 服务程序,并将其加入到开机启动项中。
19.2.3 配置 SYSLinux 服务程序
SYSLinux 是一个用于提供引导加载的服务程序,与其说 SYSLinux 是一个服务程序,不如说是一个包含了很多引导文件的文件夹。在安装好 SYSLinux 服务程序后,在 /usr/share/syslinux
目录中会有很多引导文件。
我们需要把 SYSLinux 提供的引导文件(也就是前文提到的文件 pxelinux.0),和在RHEL 8 系统光盘镜像中也有一些需要调取的引导文件,确认光盘镜像已经被挂载到
/media/下的目录后,使用 cp 命令将这些引导文件都复制到 TFTP 服务程序的默认目录中,让客户端主机就能够顺利地获取到引导文件。
cp 命令最后面接的点(.)表示当前工作目录;上述 cp 命令表示将文件复制到当前工作目录(即 /var/lib/tftpboot)中。在复制过程中,若多个目录保存着相同的文件,则可手动敲击 y 键进行覆盖即可。
继续在当前目录中新建 pxelinux.cfg 目录。虽然该目录的名字带有后缀,但依然也是目录!将系统光盘中的开机选项菜单复制到该目录中,并命名为 default。这个 default 文件就是我们每次开机时看到的选项菜单。
默认的开机菜单中有 3 个选项:安装系统、对安装介质进行检验、排错模式;既然要达到无人值守的方式安装系统,也就需要跳过手动选择了。我们要编辑这个 default 文件,把第 1 行的 default 参数修改为 linux,这样系统在开机时就会默认执行那个名称为 linux 的选项了;对应 linux 选项的参数大约在第 60 多行,将默认的光盘镜像安装方式修改成 FTP 文件传输方式,并指定好光盘镜像的获取网址以及 Kickstart 应答文件的获取路径。
注意!default 文件默认是只读文件,可以 chmod +w [文件名] 加上写权限,或者修改完后直接 wq! 强制保存并退出。
安装源的后面的 quiet 参数意为使用静默安装方式,不再需要用户进行确认,文件修改完毕后保存即可。开机选项菜单是被调用的文件,因此不需要单独重启任何服务。
19.2.4 配置 vsftpd 服务程序
我们用于安装的光盘镜像是通过 FTP 协议传输的,因此要用到
vsftpd 服务程序;也可以使用 httpd 服务程序来提供 Web 网站访问的方式,只要能确保将光盘镜像顺利传输给客户端主机即可。如果打算使用 Web 网站服务来提供光盘镜像,就得将上面配置文件中的光盘镜像获取网址和 Kickstart 应答文件获取网址修改对应。
RHEL 8 系统版本的 vsftpd 服务默认不允许匿名公开访问模式,因此需要修改配置文件 /etc/vsftpd/vsftpd.conf 进行开启;修改保存后重启 vsftpd 服务并添加到开机启动项中。
把挂载到 /media/ 下的光盘镜像文件全部复制到 vsftpd 服务程序的 /var/ftp 工作目录中;这个过程大约需要 3~5 分钟。别忘了将 SELinux 安全子系统中放行
FTP 传输协议的允许策略,设置成 on(开启)。
19.2.5 创建 Kickstart 应答文件
为了让客户端主机在自动获取光盘镜像时,还能自动帮我们填写好安装过程中出现的选项,因此需要用到 Kickstart 。其实它并不是一个服务程序而是一个应答文件!Kickstart 文件中包含了系统安装过程中需要使用的选项和参数信息,系统可以自动调取里面的参数,从而实现无人值守的安装。
其实在 root 管理员的家目录中有一个名为 anaconda-ks.cfg 的文件,它就是应答文件,我们将这个文件复制到 vsftpd 服务程序的工作目录中(在开机选项菜单的配置文件中已经定义了该文件的获取路径,也就是 vsftpd 服务程序工作目录下的 pub 子目录)。使用 chmod 命令设置该文件的权限,确保所有人都有可读的权限,让客户端主机能顺利获取到应答文件及里面的内容。
Kickstart 应答文件并没有想象中的那么复杂,它总共只有 40 多行的参数包括注释行,我们可以通过参数的名称及介绍来快速了解每个参数的作用。其中第 1~10 行表示安装硬盘的名称为 sda 及使用 LVM 技术;即要求我们在后续新建客户端虚拟机时,硬盘一定要选择 SCSI 或 SATA 类型的,否则会因找不到硬盘设备而终止安装进程。
第 8 行的软件仓库,应改为由 ftp 服务器提供的网络路径,第 10 行的安装源,也需要由 cdrom 改为 ftp 安装源。
第 11~20 行,keyboard 参数为键盘类型一般都不需要修改,但要注意第 17 行的网卡信息,一定要让网卡默认处于 dhcp 模式 notallow=on,否则在几十台主机同时被创建出来后,会因为 IP 地址冲突而导致后续无法管理。
第 21 行~30 行,timezone 参数定义了系统默认时区为“亚洲/上海”,如果我们的服务器时间不准确,则按照上图改正即可;第 29 行为创建一个普通用户,密码值可复制/etc/shadow
文件中的加密密文,安装时系统会自动创建该用户。
最后的第 31~44 行表示要安装的软件来源,graphical-server-environment 即带有图形化界面的服务器环境,它对应的是安装界面中的 Server With GUI 选项。
Kickstart 应答文件将使用 FTP 服务进行传输,然后由安装向导进行调用,因此也不需要重启服务。
19.3 自动部署客户机
成功部署各个相关的服务程序后,下面开始建立虚拟主机客户端,一定要把客户端的网络模式设定成与服务端一致的“仅主机模式”,否则设备之间无法进行通信,也就无法自动安装系统了。
打开虚拟机主页点“创建新的虚拟机”,选择“自定义(高级)”配置类型,然后单击“下一步”按钮,在随后的虚拟机硬件兼容性选项中,选择默认的“Workstation
16.x”,看虚拟机版本稍有差别。
接着将虚拟机操作系统的安装来源设置为“稍后安装操作系统”,我们要让虚拟机从网络中获取系统安装镜像,单击“下一步”。
这一步的名称随意,安装位置的空间只要足够就行;单击“下一步”,随后的2个步骤是设置虚拟CPU和内存大小,全部保持默认就行。
这一步的网络类型要和服务器保持一致:“使用仅主机模式网络”,单击“下一步”。随后的 SCSI 控制器类型选择默认的 LSI Logic。
这一步是设置硬盘类型,需选择 SCSI 或 SATA都可以,随后的 3 步:磁盘、磁盘大小、磁盘文件名都保持默认就行。
到这一步我们可以按需要单击的“自定义硬件”按钮,在弹出的界面中,把“网络适配器” 再次确认为“仅主机模式”(如果前面没选对),可自定义移除其他不需要的虚拟硬件如CD/DVD、USB控制器、打印机、声卡等,然后点“关闭”, “完成”就好。
以上我们就同时准备好了 PXE + Kickstart 无人值守安装系统与客户端主机;如在生产环境中,我们只需要将配置好的真实服务器上架,接通服务器和客户端主机之间的网线,然后启动客户端主机即可。
接下来点开启此虚拟机,开始传输光盘镜像文件并进行自动安装了—期间完全无须人工干预,直到安装完毕时才需要运维人员进行简单的初始化工作。
这一步等待进度条自动完成后如果没有自动重启,就是没有在应答文件大概第5行下添加 reboot 。
这一步为了避免法律风险,红帽公司对于许可界面还不允许用应答文件自动完成,需要人工单击“I accept the license agreement”复选框后方可继续安装。
至此整个自动安装过程顺利完成。
服务器租用托管,机房租用托管,主机租用托管,https://www.e1idc.com