Linux运维之道(第2版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2 无人职守自动安装Linux操作系统

1.2.1 大规模部署案例

前面我们详细介绍了如何通过光盘手动安装部署CentOS 7.2操作系统,但这种安装方式并不适用于所有的应用环境,以作者的Lab实验室机房为例,每个机房平均有30台主机,总计10个机房,而这些主机都需要统一安装部署CentOS 7.2操作系统。再如,像新浪、网易、淘宝这样的大型网络公司,会有上千台服务器需要部署Linux系统,如果此时依然使用光盘逐一为每台主机安装操作系统,则效率极其低下,这时就需要一种更加高效快捷的方式来统一部署这些系统。

目前行业中普遍采用成熟稳定的PXE解决方案,通过网络方式安装并结合自动应答文件,实现无人职守自动安装部署操作系统。这种安装方式需要我们配置至少一台安装服务器,所有需要安装系统的客户端,通过网络连接服务器端,下载并执行服务器上的引导文件和安装程序,再根据服务器中存放的自动应答文件实现大规模自动安装部署系统。整体环境的拓扑结构如图1-19所示。

img

图1-19

由于这种无人职守的解决方案需要提前部署一台包含DHCP、TFTP、NFS等服务的安装服务器,因此,如果你对这些服务还比较陌生,可以选择跳过本节内容,当你阅读完后面关于服务的相关章节后再看这部分内容会容易很多。

安装部署流程为:客户端首先需要在BIOS中设置网络启动,当客户端启动后,就会通过发送广播包的方式寻找DHCP服务器,如果找到DHCP服务器,即可向该服务器申请获得包括IP地址在内的各种网络参数,并通过DHCP获得TFTP[2]服务器的位置,当客户端获得TFTP服务器的地址后,即可从TFTP服务器上将启动文件下载至本机内存并运行,最终实现无盘启动的功能。我们可以对安装系统的配置文件进行自定义设置,通过设置Kickstart文件共享的位置,这样客户端启动后,即可自动寻找Kickstart文件实现无人职守安装系统。注意,Kickstart文件需要事先通过网络共享[3]。在Kickstart文件中描述了如何安装设置操作系统、运行部署脚本等。

1.2.2 PXE简介

如今,计算机启动的方式有很多,前面我们介绍了计算机从光盘启动,读取光盘中的引导文件实现系统的安装,本节需要实现的是无光盘,网络启动的无人职守安装,这里我们就需要一种名为PXE的技术。PXE是由Intel公司开发的基于客户端/服务器模式的一种技术,其核心功能是让客户端通过网络从远端服务器下载启动镜像,从而实现网络启动。整个过程中,客户端要求服务器分配IP地址,再用TFTP协议下载位于服务器上的启动镜像到本机内存中并执行,由这个启动文件完成客户端基本软件的设置。

本书介绍的案例也需要客户端能从网络启动,读取位于服务器上的启动文件,实现安装系统的功能,但这样的技术只能实现从网络启动,当读取安装程序进入安装界面后,剩余的步骤如语言设置、系统管理员密码、网络参数等还需要我们手动配置,至此,我们仅可实现无光盘网络启动,并能够手动安装操作系统,若要实现无人职守自动安装,还需要一种所谓Kickstart的技术。

1.2.3 Kickstart技术

Kickstart安装是目前主要的一种无人职守自动部署安装操作系统的方式,使用这种技术,我们可以很轻松地实现自动安装及配置操作系统。这种技术的核心是自动应答文件(Kickstart文件),即,将本来在安装过程中需要我们手动设置的语言、密码、网络等参数,通过读取自动应答文件实现自动设置。也就是说,我们需要事先将安装系统过程中问题的答案写入自动应答文件,开始安装操作系统时,指定安装程序读取自动应答文件实现自动安装及部署操作系统。

Kickstart文件可以通过如下三种方式生成。

◎ 手动书写(仅需要一个文本编辑工具即可)。

◎ 通过system-config-kickstart图形工具自动生成。

◎ 通过红帽的安装程序Anaconda自动生成。

这里主要以system-config-kickstart图形工具为主,介绍如何生成一份自动应答文件,具体步骤如下。

首先需要安装system-config-kickstart图形工具,在终端命令行输入如下命令:

img

安装完成后,可以通过输入system-config-kickstart命令运行该图形工具,效果如图1-20所示。

img
img

图1-20

在图1-20中,我们可以通过该图形工具调整系统基本配置、安装方法配置、引导程序选项、分区信息、网络配置、验证、防火墙配置、显示配置、安装包选择。除此之外,还可以编写系统安装前及安装后需要运行的脚本。在1.2.5节中,将给出使用该图形工具生成Kickstart文件自动部署Linux操作系统的完整案例。

1.2.4 配置安装服务器

从图1-19中可以看出,如果最终要实现无人职守自动安装部署操作系统,需要提前定制安装服务器,该服务器需要运行DHCP、TFTP、NFS三种服务。下面将分别介绍这三种服务的配置方法。

1.DHCP服务

DHCP服务器主要功能是在企业内部网络中,为客户端分配IP地址等网络参数。在我们的无人职守环境中,当客户端选择从网络启动后,就会通过发送广播数据包的形式寻找DHCP服务器,从DHCP获得IP地址等参数后,继而,才可以通过TFTP共享服务器下载启动文件。以下是在CentOS 7.2平台上安装部署DHCP的简单步骤。

首先,使用如下命令进行安装DHCP服务操作。

img

安装完成后,DHCP服务的主配置文件为/etc/dhcp/dhcpd.conf。我们可以修改该配置文件以实现为客户端分配网络参数的功能,以下为简单的配置文件样本。

img

上述样本文件中,subnet指定为哪个网段分配网络参数。使用range指令,设置准备为客户端分配的IP地址池(一个地址区间),这里为客户端分配从172.16.0.1到172.16.0.250之间的IP地址。学习完本书后面章节后,我们还可以根据客户端MAC地址分配固定IP。使用domain-name-servers指令,设置分配给客户端的DNS服务器地址,routers指令设置分配给客户端的网关地址。对网络启动至关重要的参数是next-server与filename,从安装部署流程可以看出,客户端启动计算机,并通过DHCP获得IP地址后,还需要从TFTP下载启动文件,而next-server设置的就是TFTP服务器的地址,filename设置的是在该TFTP文件服务器上共享的启动文件名称,客户端通过这两个参数连接TFTP服务器,并从中下载特定的启动文件。

2.TFTP服务

TFTP服务器为客户端提供一种简单的文件共享,它不具备FTP那样丰富的功能。不过由于其简单的设计,TFTP非常适用于传输小且简单的PXE启动文件。使用如下命令安装该软件:

img

安装完成TFTP服务后,还需要继续修改配置文件,默认的TFTP配置文件为/etc/xinetd.d/tftp。在该文件中,disable的默认值为yes,也就是说,该服务默认为禁用状态,需要手动修改其值为no来启动TFTP服务。另外,该配置文件中server_args的值定义了共享的目录,也就是我们的共享文件要放置的目录路径。

3.FTP服务

FTP是File Transfer Protocol 的简写,即文件传输协议。目前市面上有很多可以实现FTP协议的软件,vsftpd就是一种利用FTP协议进行数据共享的软件,vsftpd从名字上就可以看出其主要特色是提供一种安全的数据共享服务。我们可以使用它作为CentOS系统文件的共享服务平台,当客户端从网络启动正式进入安装界面后,还需要读取CentOS光盘中的系统文件,以完成最后的安装。这些文件就通过vsftpd共享给网络用户。、如果你的系统中没有还没有安装该软件,则可以使用yum安装vsftpd,安装完成后启动服务,默认将开启匿名共享功能,共享目录默认为/var/ftp目录。

img

1.2.5 自动化安装案例

本节介绍一个自动化安装部署操作系统的完整案例,其拓扑结构图如图1-21所示。从图中可以看出,为了减轻安装服务器的负载,我们将NFS单独放置在一台独立的服务器中,以提高其读写性能。两台安装服务器的IP地址分别为172.16.0.253和172.16.0.254,对应的主机名分别为boot.example.com和ftp.example.com。

img

图1-21

具体实现步骤如下。

(1)安装部署DHCP服务器,该步骤在boot.example.com主机操作。

img

安装dhcp软件后,默认会提供一份配置文件的参考模板/usr/share/doc/dhcp-4.2.5/dhcpd.conf.example,我们可以将该文件复制到/etc/dhcp目录下(覆盖原有的配置文件),并适当修改配置文件的内容如下:

img

配置说明:案例中,设置为172.16.0.0/16网络分配动态IP地址,动态地址池从172.16.0.100至172.16.0.200,客户端获取的网关地址为172.16.0.1,TFTP地址为172.16.0.253,启动文件的名称为pxelinux.0。

启动DHCP服务并设置为开机启动:

img

(2)安装部署TFTP服务器。

img
img

配置说明:默认disable为yes时会禁用tftp服务,这里需要修改为no。默认共享路径为/var/lib/tftpboot。

提示

tftp是被xinetd动态管理的服务,所以这里我们需要连同xinetd一起安装,后面的操作中,启动服务我们也仅启动xinetd即可,无须单独启动tftp服务。

(3)将客户端所需启动引导文件复制到TFTP服务器。

img

将CentOS 7.2光盘放入光驱并运行如下命令,从光盘中复制启动镜像文件和启动配置文件至TFTP共享目录。

img

修改启动配置文件如下:

img

配置说明:每一个label定义了一个启动菜单项目,menu default定义了默认引导方式,从配置文件可以看出,有一个启动项是直接安装CentOS 7,另一种是安装光盘进行测试后再安装系统。timeout定义了启动界面的超时时间,默认如果用户60秒不做任何操作,则系统将直接使用默认引导方式安装系统,本案例中我们将超时时间修改为6秒(时间单位为1/10秒)。此外,kernel指定的是系统内核文件(vmlinuz),在上面的步骤中,我们已经从光盘将内核文件从光盘中复制到TFTP共享目录下,这样客户端最终就可以通过网络TFTP共享获得该文件。如果没有后面的inst.ks参数,至此,我们可以实现无光盘启动,后面的安装步骤需要我们手动进行,设置inst.ks参数可以指定自动应答文件的位置,从而实现无人职守自动安装部署操作系统。本例将访问172.16.0.254的FTP共享,读取Kickstart文件。

重启TFTP服务并设置为开机启动:

img

(4)创建Kickstart自动应答文件。

在172.16.0.254主机上安装图形工具软件system-config-kickstart。

img

运行system-config-kickstart,设置效果如图1-22~图1-38所示。

img
img

图1-22

图1-22的配置说明:配置语言为英文,键盘设置为美式键盘,时区为亚洲/上海,root管理员密码根据自己的实际情况设置,安装完系统后将自动重启计算机。

img

图1-23

图1-23的配置说明:配置安装方式可以选择为全新安装或升级安装,本例选择全新安装,设置安装方法,通过访问FTP服务器,下载所需的安装文件(CentOS 7.2系统光盘里的内容),后面我们会将光盘直接挂载到/var/ftp/pub目录,FTP服务器设置为172.16.0.254,共享目录为/pub。

img

图1-24

图1-24的配置说明:此处配置系统引导程序,安装类型选择全新安装GRUB引导程序,GRUB选项中的密码未设置,将系统引导程序安装于MBR区域,内核参数未设置任何特殊参数。

img

图1-25

图1-25的配置说明:分区选择移除所有的现有分区后重新分区,并初始化磁盘标签。本案例中通过添加按钮创建了三个必要的分区,/根分区,boot启动分区,swap交换分区。

img

图1-26

图1-26是在分区信息中点击添加按钮后出现的对话框,通过多次点击添加按钮,我们可以创建很多磁盘分区。本案例中,挂载点选择/boot时,使用固定大小,该分区的文件系统类型使用默认的xfs格式,容量为200MB(实际输入时不需要单位MB)。swap交换分区输入特殊的分区,创建该分区时,挂载点处不需要选择,仅修改文件系统类型为交换(swap)即可,为其分配固定大小1000MB的容量。最后再创建一个/根分区,文件系统类型依然选择默认的xfs,大小选择使用磁盘上全部未使用空间。

注意

这里通过图形生成的Kickstart文件无法使用LVM逻辑卷分区,如果需要使用LVM逻辑卷分区,则要手动修改生成后的Kickstart文件。

img

图1-27

图1-27的配置说明:可以单击添加网络设备按钮添加网络设备,并设置为通过DHCP获得网络参数,本案例不需要设置,留空即可,安装系统后会自动识别计算机网卡设备。

img

图1-28

图1-28的配置说明:这里是认证设置,所有的用户密码都使用SHA512算法加密。

提示

如果需要将本机加入活动目录的话,可以修改LDAP参数加入活动目录。

img

图1-29

图1-29的配置说明:这里的SELinux与防火墙均被设置为禁用状态。

img

图1-30

图1-30的配置说明:显示配置项目,这里不勾选安装图形环境。

img

图1-31

图1-31的配置说明:这里可以选择我们希望系统安装哪些软件包,但多数情况下这里将提示失败,需要我们通过图形工具保存设置后,再手动修改应答文件,将软件包或组包的名称直接写入到应答文件中(可以参考已经安装好的CentOS 7系统,参考文件为/root/anaconda-ks.cfg)。

img

图1-32

图1-32的配置说明:预安装脚本,可以填写在安装系统前需要运行的脚本,若没有特殊需要,该脚本可以为空。

img

图1-33

img

图1-34

图1-33的配置说明:安装后脚本,可以填写安装系统后需要运行的脚本,常用脚本为创建Yum源、初始化用户账号、部署软件服务等,如没有特殊需求,该脚本可以为空。

所有的配置选项设置完成后,通过文件菜单中的保存,即可保存生成Kickstart文件,如图1-34所示。本例将其保存至/var/ftp目录下,取名为ks.cfg。

由于前面图形工具中,关于软件包安装的选项提示失败,所以在生成ks.cfg后,我们还需要手动往该文件中添加部分内容,具体内容如下:

img

编写完ks.cfg后,我们还可以通过命令来检查该文件是否有语法错误,无任何报错信息,则一切正常:

img

(5)部署FTP服务器。

安装vsftpd软件包:

img

启动vsftpd服务并设置为开机启动:

img

关闭防火墙防止客户端无法访问服务器:

img

(6)将系统光盘或ISO文件通过NFS共享。

部署完成FTP服务后,需要将光盘中的文件复制到/var/ftp/pub目录中,如果有光盘与光驱,也可以通过mount的方式将光盘直接挂载至/var/ftp/pub目录下,方法如下。

首先,将光盘从默认的挂载点卸载:

img

其次,将光盘重新挂载至/var/ftp/pub目录下:

img

如果没有光盘,仅有ISO镜像文件,也可以将ISO镜像文件挂载至/var/ftp/pub目录,方法如下:

img

(7)启动客户端,安装部署系统。

在所有客户端主机的BIOS中,将第一启动方式设置为PXE网络启动,或通过类似于开机按F12键这样的快捷方式设置启动方式。注意,由于不同型号的主机设置网络启动的方式不同,用户可根据计算机的说明书设置。设置完成后,重启所有的客户端计算机即可完成大规模集中安装部署操作系统。