PXE+Kickstart 无人值守

一、无人值守安装系统

1、为什么需要无人值守安装系统?

使用光盘镜像来安装 Linux 系统,坦白讲,该方法适用于只安装少量 Linux 系统的情况。如果生产环境中有数百台服务器都需要安装系统,这种方式就不合时宜了。

这时,我们就需要使用 PXE + TFTP +FTP + DHCP + Kickstart 服务搭建出一个无人值守安装系统。这种无人值守安装系统可以自动地为数十台服务器安装系统,这一方面将运维人员从重复性的工作中解救出来,也大大提升了系统安装的效率。

2、无人值守安装系统的工作流程

image

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 服务造成干扰。

image
image

2)安装 DHCP 服务程序包

yum  install  dhcp

3)配置 dhcpd 服务

允许了 BOOTP 引导程序协议,旨在让局域网内暂时没有操作系统的主机也能获取静态 IP地址;在配置文件的最下面加载了引导驱动文件 pxelinux.0(这个文件会在下面的步骤中创建),其目的是让客户端主机获取到 IP 地址后主动获取引导驱动文件,自行进入下一步的安装过程。

vim  /etc/dhcp/dhcpd.conf
systemctl  restart  dhcpd
systemctl  enable  dhcpd

image

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

image

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

image

默认的开机菜单中有两个选项,要么是安装系统,要么是对安装介质进行检验。既然我们已经确定采用无人值守的方式来安装Linux系统,现在我们来编辑这个 default 文件:

vim  cd  /var/lib/tftpboot/pxelinux.cfg/default

image

把第 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 应答文件

image

如果觉得系统默认自带的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步:在客户端的虚拟机中点击“新建虚拟机向导”,选择“典型(推荐)”模式来安装。

image

3)第3步:把虚拟机操作系统的安装来源设置为“稍后安装操作系统”,这样做的目的是让虚拟机从网络中(192.168.10.10服务端)获取Linux系统安装镜像资源。

image

4)第4步:指定将要安装的操作系统的类型为 " Linux -> RedHat Enterprise Linux 7 64位";指定系统在本地主机上的安装路径;自定义虚拟机的系统名称;指定系统要使用多大的磁盘容量,比如20G。

image

5)第5步:自定义硬件,把将要安装的Linux系统的“网络适配器”设备设置为“仅主机模式”(这个步骤非常重要),然后单击“确定”按钮。

image

至此,用于测试的客户端主机(虚拟机)和“PXE + Kickstart 无人值守安装系统”服务端都已经准备好了。

6)第6步:开始自动为客户端主机(测试用的虚拟机)安装Linux系统

在生产环境中,只需要将配置好的“PXE + Kickstart 无人值守安装系统”服务器上架,接通服务器和客户端主机之间的网线,然后启动客户端主机(测试用的虚拟机)即可。

接下来就会自动开始传输光盘镜像文件,并进行自动安装了。期间完全无须人工干预,直到安装完毕时才需要运维人员进行简单的初始化工作。

image
image

可见,当生产环境工作中有数百台服务器需要批量安装Linux系统时,使用无人值守安装系统是非常有必要的。

本章复习题

image
image

作者:夏海峰
链接:https://www.jianshu.com/p/ff0d230f80a6
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 162,710评论 4 376
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,839评论 2 308
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 112,295评论 0 255
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,776评论 0 223
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 53,198评论 3 297
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 41,074评论 1 226
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,200评论 2 322
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,986评论 0 214
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,733评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,877评论 2 254
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,348评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,675评论 3 265
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,393评论 3 246
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,209评论 0 9
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,996评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,212评论 2 287
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 36,003评论 2 280

推荐阅读更多精彩内容