logo

CentOS7批量自动装机:PXE网络部署全攻略

作者:Nicky2025.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. 安装必要软件包

  1. yum install -y dhcp tftp-server httpd syslinux

3. 配置TFTP服务

  • 修改/etc/xinetd.d/tftp,设置disable = no
  • 创建TFTP根目录并复制引导文件:
    1. mkdir /var/lib/tftpboot
    2. cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
    3. cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot/
    4. cp /usr/share/syslinux/vesamenu.c32 /var/lib/tftpboot/
  • 复制CentOS7内核与初始化镜像:
    1. mount /dev/cdrom /mnt # 假设已挂载ISO
    2. cp /mnt/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/

4. 配置DHCP服务

编辑/etc/dhcp/dhcpd.conf,添加以下内容:

  1. subnet 192.168.1.0 netmask 255.255.255.0 {
  2. range 192.168.1.100 192.168.1.200;
  3. option routers 192.168.1.1;
  4. option subnet-mask 255.255.255.0;
  5. filename "pxelinux.0";
  6. next-server 192.168.1.5; # TFTP服务器IP
  7. }

重启DHCP服务:

  1. systemctl restart dhcpd

5. 配置HTTP服务

解压CentOS7 ISO至HTTP目录:

  1. mkdir /var/www/html/centos7
  2. mount /dev/cdrom /mnt
  3. cp -r /mnt/* /var/www/html/centos7/
  4. umount /mnt

启动HTTP服务:

  1. systemctl start httpd

6. 创建PXE引导菜单

/var/lib/tftpboot/pxelinux.cfg/下创建默认配置文件default

  1. DEFAULT vesamenu.c32
  2. PROMPT 0
  3. MENU TITLE CentOS7 PXE Install
  4. TIMEOUT 60
  5. LABEL install_centos7
  6. MENU LABEL Install CentOS7
  7. KERNEL vmlinuz
  8. 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)定义安装细节,示例如下:

  1. # 语言与键盘
  2. lang en_US.UTF-8
  3. keyboard us
  4. # 网络配置
  5. network --bootproto=dhcp --device=eth0 --onboot=yes
  6. # 根密码(需加密)
  7. rootpw --plaintext centos
  8. # 分区方案
  9. clearpart --all --initlabel
  10. part / --fstype=xfs --size=10240
  11. part swap --size=2048
  12. part /home --fstype=xfs --size=1 --grow
  13. # 安装软件包
  14. %packages
  15. @core
  16. %end
  17. # 安装后脚本(可选)
  18. %post
  19. echo "Post-install script executed"
  20. %end

注意:生产环境需使用加密密码(通过openssl passwd生成)。

五、测试与验证

  1. 客户端启动:进入BIOS设置PXE为第一启动项。
  2. 观察过程:客户端应自动获取IP、下载引导文件、加载内核,并依据kickstart脚本完成安装。
  3. 验证结果:登录安装后的系统,检查分区、软件包及配置是否符合预期。

六、常见问题与解决方案

  1. TFTP下载失败:检查防火墙是否放行UDP 69端口,或使用systemctl status tftp查看服务状态。
  2. Kickstart脚本错误:通过/root/anaconda-ks.cfg(安装日志)排查语法或路径问题。
  3. DHCP冲突:确保局域网内无其他DHCP服务器。

七、进阶优化

  • 多机型适配:通过MAC地址绑定不同kickstart脚本(在pxelinux.cfg/下创建01-<MAC>文件)。
  • 日志集中管理:配置rsyslog收集各客户端安装日志。
  • 安全加固:限制TFTP/HTTP访问权限,使用HTTPS传输kickstart脚本。

八、总结

PXE网络装机结合kickstart脚本,可实现CentOS7的高效批量部署,尤其适用于大规模数据中心。通过标准化配置,不仅降低人为错误,还为后续自动化运维(如Ansible)奠定基础。建议在实际环境中先小规模测试,再逐步推广至全量部署。

相关文章推荐

发表评论