服务器的批量部署

规模化:同时装配多台服务器

自动化:安装系统、配置各种服务

远程实现:不需要光盘、U盘等安装介质


PXE 高效批量网络装机_linux


关于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


rootOlocalhost 
mount: / dev/srO 
[ root6tocalhost 
[ root810calhost 
[ rootOtocalhost 
[ root@localhost 
dev/cdrom /mnt/ 
mount 
# cd /etc/yum. repos. d/ 
yum. repos. d] # touch zz. repo 
yum. repos. d] # vim zz. repo 
yum. repos. dl # 
1 root root 53 IOh 18 11:30 zz. repo 
-rw-r--r--. 
[ root@localhost yum. repos. d] # systemctl stop firewalld 
rootOlocalhost yum. repos. d] # setenforce O


配置网卡并重启


PXE 高效批量网络装机_linux_02


安装ftp,dhcp服务


[root@localhost yum. repos .d]# yum install vsftpd dhcp 
fastestmi rror, tangpacks 
Loading mirror speeds from cached hostfile 
---> dhcp.x86_64.12.4.2.5-82.et7.centos 
---> vsftpd.x86_64.O.3.O.2-28.e17


创建目录 复制到创建的目录下 启动服务

[root@localhost ~]# mkdir /var/ftp/centos7

[root@localhost ~]# cp -rf /mnt/* /var/ftp/centos7/

[root@localhost ~]# systemctl start vsftpd


[root@localhost yum. repos .d]# mkdir /var/ftp/centos7 
[root@localhost yum. repos .d]# cp -rf /rnnt/* /var/ftp/centos7/ 
[root@localhost yum. repos .d]# systemctl start vsftpd 
[root@localhost yum. repos .d]# I


2.安装并启用 TFTP 服务

TFTP 服务由 tftp-server 软件包提供,配置文件位于/etc/xinetd.d/tftp。配置时只

要将“disable = yes”改为“disable
= no”,然后启动 TFTP 服务即可。

[root@localhost ~]# yum -y install tftp-server


[root@localhost yum. repos . yum install tftp-server.x86 64 
fastes tmirror, langpacks 
Loading mirror speeds from cached hostfile 
--> tftp-server.x86_64.O.5.2-22.e17


[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

 „„ //省略部分信息}


service tftp 
socket_type 
protocol 
wait 
user 
server 
server args 
disable 
per source 
cps 
flags 
dgram 
udp 
= root 
= /usr/sbin/in.tftpd 
— -s /var/lib/tftpboot 
11 
= 100 
= IPv4


[root@localhost ~]# systemctl start tftp

[root@localhost ~]# systemctl enable tftp


[root@localhost yum. repos . systemctl restart tftp 
[root@tocalhost yum. repos . systemctl enable tftp 
[root@localhost yum.


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


[root@localhost yum. repos .d]# cd 
[root@localhost pxeboot]# It 
60456 
-n•/-r--r--. 6 root root 55129656 
/mt/ images/pxeboot/ 
-r--r--r--. 1 root root 
441 
- rwxr-xr-x. 6 root root 6769256 
10É 27 
10; 20 
[root@localhost pxeboot]# cp initrd.img 
[ root@localhost oxebootl# 
2020 initrd.img 
2020 TRANS. TBL 
2020 vmLinuz 
vmlinuz /var/lib/tftpboot/


4.准备 PXE 引导程序

用于 PXE 网络安装的引导程序为
pxelinux.0,由软件包 syslinux 提供。安装好软件包

syslinux,然后将文件 pxelinux.0 也复制到 tftp 服务的根目录下。

[root@localhost ~]# yum -y install syslinux


[root@localhost pxeboot]# yum install -y systinux. x86 64 
fastestmirror, langpacks 
Loading mirror speeds from cached hostfile


[root@localhost ~]# cp /usr/share/syslinux/pxelinux.0
/var/lib/tftpboot


PXE 高效批量网络装机_服务器_03


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 引导程序的文件名

}


subnet 192. 168.10.0 
option routers 192. 
option subnet-mask 
option domain-name 
option domain-name-servers 192. 
default-tease-time 
netmask 255. 
168.10.10; 
255.255.255.0, 
"bdqn . com" ; 
21600; 
255.255.0 { 
168.10.10,202.106.0.2€; 
max-lease-time 43200; 
range 192.168.10.100 192.168.10.200; 
next-server 192.168.10.10; 
filename "pxeIinux.O";


[root@localhost ~]# systemctl start dhcpd

[root@localhost ~]# systemctl enable dhcpd


[root@localhost pxeboot]# vi /etc/dhcp/dhcpd.conf 
[root@localhost pxeboot]# systemctl restart dhcpd 
[root@localhost pxeboot]# systemctl enable dhcpd 
Created symlink from /etc/systemd/system/multi-user.target.


6.配置启动菜单文件

启动菜单用来指导客户机的引导过程,包括如何调用内核,如何加载初始化镜像。默认的启动菜单文件为 default,应放置在 tftp 根目录的 pxelinux.cfg 子目录下,典型的启动菜单配置可参考以下操作手动建立。

[root@localhost ~]# mkdir
/var/lib/tftpboot/pxelinux.cfg

[root@localhost ~]# vi
/var/lib/tftpboot/pxelinux.cfg/default


[ root@localhost pxeboot]# mkdir /var/lib/tftpboot/pxelinux.cfg 
[root@localhost pxeboot]# cd /var/lib/tftpboot/pxelinux. cfg 
[root@localhost vim default 
[root@localhost O


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 网络安装

新建一个虚拟机测试 基础配置


内 存 
0 处 理 器 
硬 盘 (SCSI) 
@CD/DVD (IDE) 
、 圍 适 配 器 
口 显 示 器 
生 窀 又 ( 褂 In 刂 
谩 备 状 态 
囝 已 连 接 ( 0 
启 动 时 连 接 ( 0 ) 
网 络 连 接 
O 接 摸 式 ( 8 ) : 直 接 连 接 物 理 网 络 
0 复 制 物 埋 网 络 连 接 状 态 伊 ) 
O NAT 模 式 ( N ) : 用 于 共 享 主 扒 的 伊 地 址 
O 仅 主 樵 式 ( H ) : 与 王 榌 共 享 的 专 用 网 络 
自 定 义 ( U ) : 特 定 虚 拟 网 络 
VMnet1 ( 仅 主 榌 模 式 )


开机启动


WELCOME ТО CENTOS 7. 
WMt [моде Пе 'о d'_wmg 
Enq'sh



实现 Kickstart 无人值守安装

上一节介绍了通过 PXE 技术远程安装 CentOS 7
系统的方法,安装介质不再受限于光盘、移动硬盘等设备,大大提高了系统安装的灵活性。然而,安装期间仍需要手动选择语言、键盘类型、指定安装源等一系列交互操作,当需要批量安装时非常不方便。

本节将进一步学习如何实现无人值守自动安装,通过使用 Kickstart 工具配置安装应答

文件,自动完成安装过程中的各种设置,从而无须手动干预,提高网络装机效率。

6.2.1 准备安装应答文件

在 CentOS 7 系统中安装
system-config-kickstart 工具之后,即可通过图形化向导工具来配置安装应答文件。如果用户对自动应答文件的配置比较熟悉,也可以直接编辑 CentOS 7 安装后自动创建的应答文件(/root/anaconda-ks.cfg),根据需要适当修订后使用。

安装工具


[root@localhost yum install system-config-kickstart 
fastestmi rror, tangpacks 
Loading mirror speeds from cached hostfile 
system-config-kickstart.noarch.O.2.9.7-1.e17 
--> system-config-keyboard 1.3.1, system 
--> system-config-language, system-config-k 
system-config-date, system-config-kicks


1.配置安装应答参数

通过桌面菜单“应用程序”→“系统工具”→“Kickstart”即可打开“Kickstart

置程序”窗口。在“Kickstart 配置程序”窗口中,可以针对基本配置、安装方法、引导装

载程序选项、分区信息、网络配置等各种安装设置进行指定


Kickstart 配 置 程 序 
文 件 (F) 帮 助 (H) 
基 本 配 置 
安 装 方 法 
引 导 装 戧 程 序 选 项 
分 区 信 息 
网 配 置 
验 证 
防 火 墒 配 置 
显 示 配 置 
软 件 包 选 择 
预 安 装 脚 本 
安 装 后 脚 本 
基 本 配 置 
默 认 语 言 : 
时 区 : 
Root 密 码 : 
确 认 密 码 : 
高 级 配 置 
目 柝 架 构 : 
Chinese (P.R. Of China) 
U.S. English 
Africa/Abidjan 
0 使 用 UTC 时 砷 
绐 ro 。 t 密 码 加 密 
一 中 文 ( 简 体 ) 
x86 , AMD64. 或 Intel EM64T 
安 装 后 重 启 
0 在 文 本 模 式 中 执 行 安 装 ( 默 认 为 图 形 化 模 式 )


1)基本配置及安装方法

“基本配置”可参考图 11.3 来指定。例如,将默认语言设为“中文(简体)”,时区设为“Asia/Shanghai”,根口令设为“pwd123”,高级配置中勾选“安装后重启”。

在“安装方法”界面中,应正确指定 CentOS 7 的安装方法。若有用户验证信息也需一并指定。在“引导装载程序选项”界面中,选择安装新引导装载程序。


Kickstart 配 置 程 序 
文 件 (F) 帮 助 (H) 
! 基 本 配 罟 
安 装 方 法 
引 导 装 载 程 序 选 项 
分 区 信 息 
网 络 配 置 
验 证 
防 火 墙 配 置 
显 示 配 置 
软 件 包 选 择 
预 安 装 脚 本 
安 装 后 脚 本 
安 装 方 法 
@ 执 行 全 新 安 裝 
0 升 级 现 有 安 装 
安 装 方 法 
0 光 盘 驱 动 器 
0 NFS 
0 HTTP 
F 服 务 器 : 
FTP 目 录 : 
饩 p: / / 192 . 168 . 10 . 10 
centOS71 
0 指 定 FTP 用 户 名 和 密 码 
0 镟 盘 驱 动 器 
F 伊 用 尸 名 : 
F 伊 密 码 :


指定 CentOS 7 的安装方法

2)分区信息

在“分区信息”界面中,需正确规划硬盘分区方案。例如,可划分一个 500MB 的/boot

分区、4GB 的/home 分区、2GB 的 swap 分区,将剩余空间划分给根分区


Kickstart 配 置 程 序 
文 件 (F) 帮 助 (H) 
主 引 导 记 录 
基 本 配 置 
0 除 主 引 导 记 录 
安 装 方 法 
引 导 装 载 程 序 选 顼 
@ 不 要 主 引 导 记 录 
分 区 信 息 
分 区 : 
闷 络 配 置 
@ 删 所 有 现 存 分 区 
验 证 
0 删 除 现 存 Linux 分 区 
防 火 墙 配 置 
显 示 配 置 
0 保 留 现 存 分 区 
软 件 包 选 择 
磁 盘 标 签 
预 安 装 脚 本 
0 初 始 化 磁 盘 柝 签 
安 装 后 脚 本 
@ 不 要 初 始 化 磁 盘 柝 签 《 
布 局 
设 备 / 
挂 载 点 / 
类 型 
格 式 大 小 ( MB) 
分 区 号 码 
RAID 
是 是 是 
/boot 
匚 凵 0 乙 
^ 刂 O 
'home 
xfs 
Swap 
Swap 
添 加 (A) 
编 辑 (E) 
删 除 ( 勇 
RAID


 指定硬盘分区方案

3)网络配置及防火墙配置

在“网络配置”界面中,添加一个网络设备“ens33”,将网络类型设为“DHCP”。

在“防火墙配置”界面中,可以选择禁用 SELinux、禁用防火墙。


Kickstart 配 置 程 序 
文 件 (F) 帮 助 (H) 
基 本 配 罟 
安 装 方 法 
引 导 装 载 程 序 选 项 
分 区 信 息 
塗 配 罟 
验 证 
防 火 墒 配 置 
显 示 配 置 
软 件 包 选 择 
预 安 装 脚 本 
安 装 后 脚 本 
网 配 罟 
设 备 网 类 型 
添 加 网 络 设 备 (A) 
编 辑 网 络 谩 备 ( 0 
。 网 络 谖 备 《 叻 
网 绉 设 备 : 
网 类 型 : 
IP 地 址 : 
子 网 莼 玛 : 
网 关 : 
网 绉 备 信 息 
ens34 
DHCP 
名 称 服 务 器 : 
取 消 (C) 
确 定 ( 0 )


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

进设置好的文件中


[root@localhost 
install 
keyboard 'us ' 
—]# vim ks.cfg 
rootpw - -iscrypted $1$VmTUbcCn$LrcGIFm7KDQM3.0Z9WmsB1 
tang Zh CN 
auth 
-useshadow 
graphical 
firstboot - -enable 
selinux 
fi rewa11 
network 
reboot 
- -disabled 
-disabled 
- -passalgo= 
sha512 
-device=gns33 
timezone Africa/Abidjan 
168 . . 
bootloader - -location= 
clearpart 
part /boot 
-fs type= " xfs 
part / --fstype= 'xfs


把这个文件复制到/ftp/目录下


[root@localhost —]# 
cp ks.cfg /var/ftp/ 
[root@localhost cd /var/ftp/ 
[root@localhost ftp]# 
drwxr 
-xr 
- rwxr- 
d rwxr 
-xr 
-x. 
-x. 
8 
2 
root 
root 
root 
root 
root 
root 
root 
root 
2044 
220 
786 
11 
11 
11 
14 
15:53 anaconda-ks.cfg 
14:51 centos7 
16:09 ks.cfg 
2020 pub


再切换到这个目录下 修改配置文件


[root@localhost ftpl# cd /var/lib/tftpboot/pxelinux.cfg/ 
Iroot@localhost pxelinux.cfgl# vim default 
default auto 
pronpt O 
label auto 
kernel vrnlinuz 
bend initrd=initrd.imq .cfg



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 文件。

验证无人值守自动安装


一 切 就 续 , 开 始 用 吧 ! 
开 鮐 使 用 CentOS Linux(S)