服务器的批量部署
规模化:同时装配多台服务器
自动化:安装系统、配置各种服务
远程实现:不需要光盘、U盘等安装介质
关于PXE网络
PXE,Pre-boot eXcution Environment
预启动执行环境,在操作系统之前运行
可用于远程安装、构建无盘工作站
服务端
运行DHCP服务,用来分配地址、定位引导程序
运行TFTP服务器,提供引导程序下载
客户端
网卡支持PXE协议
主板支持网络启动
配置PXE装机服务器
基本部署过程
准备CentOS 7 安装源(YUM仓库)
启用TFTP服务,并提供内核、引导程序
启用DHCP服务,用来分配地址、指出引导程序位置
配置启动菜单
搭建 PXE 远程安装服务器
1.准备 CentOS 7 安装源
CentOS 7
的网络安装源一般通过 HTTP、FTP 协议发布,另外也支持 NFS(Network File
System,网络文件系统)协议,关于 NFS 的配置请参阅其他资料,这里不再赘述。
安装yum源 关闭防火墙和安全Linux
配置网卡并重启
安装ftp,dhcp服务
创建目录 复制到创建的目录下 启动服务
[root@localhost ~]# mkdir /var/ftp/centos7
[root@localhost ~]# cp -rf /mnt/* /var/ftp/centos7/
[root@localhost ~]# systemctl start vsftpd
2.安装并启用 TFTP 服务
TFTP 服务由 tftp-server 软件包提供,配置文件位于/etc/xinetd.d/tftp。配置时只
要将“disable = yes”改为“disable
= no”,然后启动 TFTP 服务即可。
[root@localhost ~]# yum -y install tftp-server
[root@localhost ~]# vi /etc/xinetd.d/tftp
service tftp
{
„„ //省略部分信息
protocol = udp //TFTP 采用 UDP 传输协议
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot //指定 TFTP 根目录
disable = no
„„ //省略部分信息}
[root@localhost ~]# systemctl start tftp
[root@localhost ~]# systemctl enable tftp
3.准备 Linux 内核、初始化镜像文件
用于 PXE 网络安装的 Linux 内核、初始化镜像文件可以从 CentOS 7 系统光盘获得,分别为 vmlinuz 和 initrd.img,位于文件夹
images/pxeboot 下。找到这两个文件并将其复制
到 tftp 服务的根目录下。
[root@localhost ~]# cd /mnt/images/pxeboot
[root@localhost pxeboot]# cp initrd.img
vmlinuz /var/lib/tftpboot
4.准备 PXE 引导程序
用于 PXE 网络安装的引导程序为
pxelinux.0,由软件包 syslinux 提供。安装好软件包
syslinux,然后将文件 pxelinux.0 也复制到 tftp 服务的根目录下。
[root@localhost ~]# yum -y install syslinux
[root@localhost ~]# cp /usr/share/syslinux/pxelinux.0
/var/lib/tftpboot
5.安装并启用 DHCP 服务
由于 PXE 客户机通常是尚未装系统的裸机,因此为了与服务器取得联系并正确下载相关引导文件,需要预先配置好 DHCP 服务来自动分配地址并告知引导文件位置。如 PXE 服务器的 IP 地址为 192.168.4.254,DHCP 地址池为
192.168.4.100~192.168.4.200,则可以参考以下操作来搭建 DHCP 服务器。
[root@localhost ~]# yum -y install dhcp
[root@localhost ~]# vi /etc/dhcp/dhcpd.conf
„„ //省略部分信息
subnet
192.168.10.0 netmask 255.255.255.0 {
option routers 192.168.10.10;
option subnet-mask 255.255.255.0;
option domain-name "bdqn.com";
option domain-name-servers
192.168.10.10,202.106.0.20;
default-lease-time 21600;
max-lease-time 43200;
range 192.168.10.100 192.168.10.200;
next-server 192.168.10.10; //指定 TFTP 服务器的地址
filename "pxelinux.0"; //指定 PXE 引导程序的文件名
}
[root@localhost ~]# systemctl start dhcpd
[root@localhost ~]# systemctl enable dhcpd
6.配置启动菜单文件
启动菜单用来指导客户机的引导过程,包括如何调用内核,如何加载初始化镜像。默认的启动菜单文件为 default,应放置在 tftp 根目录的 pxelinux.cfg 子目录下,典型的启动菜单配置可参考以下操作手动建立。
[root@localhost ~]# mkdir
/var/lib/tftpboot/pxelinux.cfg
[root@localhost ~]# vi
/var/lib/tftpboot/pxelinux.cfg/default
default
auto //指定默认入口名称
prompt 1
//1 表示等待用户控制
label auto
kernel vmlinuz
append initrd=initrd.img
method=ftp://192.168.10.10/centos7
label linux
text
kernel vmlinuz
append text
initrd=initrd.img method=ftp://192.168.4.254/centos7
label linux
rescue
kernel vmlinuz
append rescue
initrd=initrd.img method=ftp://192.168.4.254/centos7
验证 PXE 网络安装
新建一个虚拟机测试 基础配置
开机启动
实现 Kickstart 无人值守安装
上一节介绍了通过 PXE 技术远程安装 CentOS 7
系统的方法,安装介质不再受限于光盘、移动硬盘等设备,大大提高了系统安装的灵活性。然而,安装期间仍需要手动选择语言、键盘类型、指定安装源等一系列交互操作,当需要批量安装时非常不方便。
本节将进一步学习如何实现无人值守自动安装,通过使用 Kickstart 工具配置安装应答
文件,自动完成安装过程中的各种设置,从而无须手动干预,提高网络装机效率。
6.2.1 准备安装应答文件
在 CentOS 7 系统中安装
system-config-kickstart 工具之后,即可通过图形化向导工具来配置安装应答文件。如果用户对自动应答文件的配置比较熟悉,也可以直接编辑 CentOS 7 安装后自动创建的应答文件(/root/anaconda-ks.cfg),根据需要适当修订后使用。
安装工具
1.配置安装应答参数
通过桌面菜单“应用程序”→“系统工具”→“Kickstart”即可打开“Kickstart
配
置程序”窗口。在“Kickstart 配置程序”窗口中,可以针对基本配置、安装方法、引导装
载程序选项、分区信息、网络配置等各种安装设置进行指定
1)基本配置及安装方法
“基本配置”可参考图 11.3 来指定。例如,将默认语言设为“中文(简体)”,时区设为“Asia/Shanghai”,根口令设为“pwd123”,高级配置中勾选“安装后重启”。
在“安装方法”界面中,应正确指定 CentOS 7 的安装方法。若有用户验证信息也需一并指定。在“引导装载程序选项”界面中,选择安装新引导装载程序。
指定 CentOS 7 的安装方法
2)分区信息
在“分区信息”界面中,需正确规划硬盘分区方案。例如,可划分一个 500MB 的/boot
分区、4GB 的/home 分区、2GB 的 swap 分区,将剩余空间划分给根分区
指定硬盘分区方案
3)网络配置及防火墙配置
在“网络配置”界面中,添加一个网络设备“ens33”,将网络类型设为“DHCP”。
在“防火墙配置”界面中,可以选择禁用 SELinux、禁用防火墙。
4)软件包选择
CentOS 7
系统开始不再提供软件包的选择,如图 6.6 所示。如果需要安装软件包,可以根据需要将/root/anaconda-ks.cfg 的软件包安装脚本复制到 ks.cfg 文件中,只需要复制%packages 到%end 部分即可,在%packages 到%end 之间,包含以@开头的软件包列表,将不需要的软件名删除,剩下的就是系统会自动安装的软件包。例如,仅保留以下内容即为采用最小化安装。
%packages
@^minimal
%end
图 6.6 指定需要安装的软件包
5)安装脚本
在“预安装脚本”界面、“安装后脚本”界面中,可以分别添加在安装前、安装后自动运行的可执行语句。此项设置使服务器的自动化配置变得更加容易。例如,可以使客户机在完成安装后自动设置 YUM 软件仓库,如图 6.7 所示。需要注意的是,应确保所编写的代码能够正确执行,以免安装失败。
6)其他信息
若没有特殊需求,在“验证”界面、“显示配置”界面中,保持默认设置就可以了。
添加安装后的脚本语句
2.保存自动应答文件
选择“Kickstart 配置程序”窗口的“文件”→“保存”命令,指定目标文件夹、文件
名,将配置好的应答参数保存为文本文件,如/root/ks.cfg。以后若要修改此应答配置,可以在“Kickstart 配置程序”窗口中打开进行调整,或者直接用 VI 等文本编辑工具进行修改。
[root@localhost ~]# grep -v ^# /root/ks.cfg
install
keyboard 'us'
rootpw
--iscrypted $1$VmTUbcCn$LrcG1Fm7KDQM3.OZ9WmsB1
lang zh_CN
auth --useshadow
--passalgo=sha512
graphical
firstboot
--enable # 设置为开机加载系统
selinux
--disabled
firewall
--disabled
network --bootproto=dhcp --device=ens33
reboot
timezone
Africa/Abidjan
url
--url="ftp://192.168.100.100/centos7"
bootloader
--location=mbr
clearpart
--all
part /boot
--fstype="xfs" --size=500
part /
--fstype="xfs" --grow --size=1
%packages
@^gnome-desktop-environment
@base
@core
@desktop-debugging
@dial-up
@directory-client
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@input-methods
@internet-browser
@java-platform
@multimedia
@network-file-system-client
@networkmanager-submodules
@print-client
@security-tools
@x11
chrony
kexec-tools
%end
进设置好的文件中
把这个文件复制到/ftp/目录下
再切换到这个目录下 修改配置文件
6.2.2 实现批量自动装机
有了自动安装的应答文件之后,只要将其放置 PXE 安装服务器的 FTP 目录下,并适当修改引导菜单,就可以实现基于网络的批量自动装机了。
1.启用自动应答文件
在 PXE 远程安装服务器中,将上一节建立的应答文件复制到/var/ftp/centos7 目录下,使客户机能够通过 ftp://192.168.4.254/centos7/ks.cfg 访问;然后编辑引导菜单文件default,添加 ks 引导参数以指定 ks.cfg 应答文件的 URL 路径。
[root@localhost ~]# cp ks.cfg /var/ftp/
[root@localhost ~]# vi
/var/lib/tftpboot/pxelinux.cfg/default
default auto
prompt 0
//0 表示不等待用户控制
label auto
kernel vmlinuz
append initrd=initrd.img
method=ftp://192.168.10.10/centos7 ks=ftp://192.168.10.10/ks.cfg
2.验证无人值守安装
启用自动应答安装之后,当客户机每次以 PXE 方式引导时,将自动下载
ks.cfg 应答配置文件,然后根据其中的设置安装
CentOS 7 系统,而无须手工干预,如图 6.8 所示,这样就可以同时为多台客户机安装系统了。
客户机安装完成以后,检查其 YUM 软件仓库配置,可以发现已经按照“安装后脚本”的设置自动建立了/etc/yum.repos.d/centos7.repo 文件。
验证无人值守自动安装