CentOS7批量自动装机:PXE网络部署全攻略
2025.09.26 12:26浏览量:0简介:本文详细介绍如何利用PXE网络协议实现CentOS7系统的批量自动装机,包括环境准备、TFTP/DHCP/HTTP服务配置、kickstart自动化脚本编写及测试验证,帮助企业高效部署系统。
一、引言:为何选择PXE网络装机?
在数据中心或大规模企业环境中,手动安装操作系统(如CentOS7)不仅耗时耗力,还容易因人为操作差异导致配置不一致。PXE(Preboot Execution Environment)网络装机技术通过局域网实现操作系统的远程加载与安装,结合kickstart自动化脚本,可实现无人值守的批量部署,显著提升运维效率与标准化程度。
二、PXE网络装机原理与核心组件
1. PXE工作原理
PXE依赖客户端(待装机服务器)通过网卡启动时发送DHCP请求,获取IP地址及TFTP服务器地址,随后从TFTP下载引导文件(如pxelinux.0),最终加载内核与初始化镜像(initrd),启动安装程序。
2. 核心组件
- DHCP服务器:分配IP地址及TFTP服务器信息。
- TFTP服务器:提供引导文件与内核镜像。
- HTTP/FTP服务器:存储CentOS7安装镜像(ISO解压后的文件)。
- Kickstart脚本:定义安装过程中的分区、软件包、用户等配置。
三、环境准备与配置步骤
1. 基础环境
- 服务器:一台运行CentOS7的机器作为服务端。
- 客户端:多台支持PXE启动的服务器。
- 网络:确保服务端与客户端在同一局域网。
2. 安装必要软件包
yum install -y dhcp tftp-server httpd syslinux
3. 配置TFTP服务
- 修改
/etc/xinetd.d/tftp
,设置disable = no
。 - 创建TFTP根目录并复制引导文件:
mkdir /var/lib/tftpboot
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot/
cp /usr/share/syslinux/vesamenu.c32 /var/lib/tftpboot/
- 复制CentOS7内核与初始化镜像:
mount /dev/cdrom /mnt # 假设已挂载ISO
cp /mnt/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/
4. 配置DHCP服务
编辑/etc/dhcp/dhcpd.conf
,添加以下内容:
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200;
option routers 192.168.1.1;
option subnet-mask 255.255.255.0;
filename "pxelinux.0";
next-server 192.168.1.5; # TFTP服务器IP
}
重启DHCP服务:
systemctl restart dhcpd
5. 配置HTTP服务
解压CentOS7 ISO至HTTP目录:
mkdir /var/www/html/centos7
mount /dev/cdrom /mnt
cp -r /mnt/* /var/www/html/centos7/
umount /mnt
启动HTTP服务:
systemctl start httpd
6. 创建PXE引导菜单
在/var/lib/tftpboot/pxelinux.cfg/
下创建默认配置文件default
:
DEFAULT vesamenu.c32
PROMPT 0
MENU TITLE CentOS7 PXE Install
TIMEOUT 60
LABEL install_centos7
MENU LABEL Install CentOS7
KERNEL vmlinuz
APPEND initrd=initrd.img inst.repo=http://192.168.1.5/centos7 ks=http://192.168.1.5/ks.cfg
四、编写Kickstart自动化脚本
Kickstart脚本(/var/www/html/ks.cfg
)定义安装细节,示例如下:
# 语言与键盘
lang en_US.UTF-8
keyboard us
# 网络配置
network --bootproto=dhcp --device=eth0 --onboot=yes
# 根密码(需加密)
rootpw --plaintext centos
# 分区方案
clearpart --all --initlabel
part / --fstype=xfs --size=10240
part swap --size=2048
part /home --fstype=xfs --size=1 --grow
# 安装软件包
%packages
@core
%end
# 安装后脚本(可选)
%post
echo "Post-install script executed"
%end
注意:生产环境需使用加密密码(通过openssl passwd
生成)。
五、测试与验证
- 客户端启动:进入BIOS设置PXE为第一启动项。
- 观察过程:客户端应自动获取IP、下载引导文件、加载内核,并依据kickstart脚本完成安装。
- 验证结果:登录安装后的系统,检查分区、软件包及配置是否符合预期。
六、常见问题与解决方案
- TFTP下载失败:检查防火墙是否放行UDP 69端口,或使用
systemctl status tftp
查看服务状态。 - Kickstart脚本错误:通过
/root/anaconda-ks.cfg
(安装日志)排查语法或路径问题。 - DHCP冲突:确保局域网内无其他DHCP服务器。
七、进阶优化
- 多机型适配:通过MAC地址绑定不同kickstart脚本(在
pxelinux.cfg/
下创建01-<MAC>
文件)。 - 日志集中管理:配置rsyslog收集各客户端安装日志。
- 安全加固:限制TFTP/HTTP访问权限,使用HTTPS传输kickstart脚本。
八、总结
PXE网络装机结合kickstart脚本,可实现CentOS7的高效批量部署,尤其适用于大规模数据中心。通过标准化配置,不仅降低人为错误,还为后续自动化运维(如Ansible)奠定基础。建议在实际环境中先小规模测试,再逐步推广至全量部署。
发表评论
登录后可评论,请前往 登录 或 注册