如何利用CentOS Cobbler和PXE启动技术实现高效批量装机操作?
- 内容介绍
- 文章标签
- 相关推荐
一、使用者痛点概述
在大规模服务器或工作站交付时常见的痛点包括:
- 手动逐台安装程序耗时且易出错;
- IP 地址分配混乱导致 DHCP 冲突;话说回来,
- 每台机器的配置细节不统一。后期维护成本高,
- 缺少统一的监控与日志,无法快速定位部署失败原因。
使用 CentOS Cobbler 与 PXE 启动 可以一次性解决以上问题,自动运行、批量、可视化的装机流程。
二、环境准备
硬件与网络要求
- 一台运行 CentOS的 Cobbler 服务器,推荐使用千兆以上网络。
- 目标机器需支持 PXE启动,并能从同一网段获取 IP。话说回来,
- 确保 TFTP、DHCP、HTTP/HTTPS 服务端口未被防火墙阻断。
程序基础设置
关闭 SELinux 与防火墙:
# setenforce 0
# sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
# systemctl stop firewalld
# systemctl disable firewalld
三、安装 Cobbler 与相关组件
# yum install -y epel-release
# yum install -y cobbler cobbler-web cobbler-dhcp cobbler-pxe cobbler-pxe-tftp \
cobbler-syslinux cobbler-ksvalidator
# yum install -y dhcp tftp-server httpd xinetd
# systemctl enable --now httpd xinetd tftp
# systemctl enable --now cobblerd
四、导入操作程序镜像
Cobbler 必须先把 ISO 内容导入到本地仓库:
# cobbler import --name=centos7 --path=/data/isos/CentOS-7-x86_64-DVD.iso --arch=x86_64
# cobbler import --name=centos8 --path=/data/isos/CentOS-8-x86_64-BaseOS.iso --arch=x86_64
五、配置 Cobbler 主设置
编辑 /etc/cobbler/settings:
# vi /etc/cobbler/settings
server这方面,192.168.10.10 # Cobbler 服务器 IP
next_server: 192.168.10.10 # TFTP/PXE 引导文件所在服务器 IP
manage_dhcp: 1 # 是否让 Cobbler 管理 DHCP
dhcp_template: /etc/cobbler/dhcp.template
default_password_crypted: "$6$randomsalt$..."
pxe_just_once: 0 # 多次 PXE 启动均可获取配置
manage_dns: 0 # 如需 DNS 管理请设为1并配置相应模板
...
六、创建部署 Profile 与 Kickstart 模板
a) 创建基础 Profile
# cobbler profile add --name=centos7-base \
--distro=centos7 \
--kickstart=/var/lib/cobbler/kickstarts/centos7-base.ks \
--enable-menu=yes
b) 编写 Kickstart 示例(保存为 /var/lib/cobbler/kickstarts/centos7-base.ks)
#platform=x86。AMD64,or Intel EM64T
install
url --url="http://192.168.10.10/cobbler/repo_mirror/centos7/x86_64"
lang en_US.UTF-8
keyboard us
network --bootproto=dhcp --device=eth0
rootpw --iscrypted $6$randomsalt$...
firewall --enabled --service=ssh
authconfig --enableshadow --passalgo=sha512
timezone Asia/Shanghai
bootloader --location=mbr
clearpart --all --initlabel
part /boot --fstype="xfs" --size=500
part pv.01 --fstype="lvmpv" --grow # LVM Physical Volume
volgroup vg_root pv.01
logvol / --vgname=vg_root --size=20480 --name=root \
--fstype="xfs"
logvol swap --vgname=vg_root --size=4096 \
--name=swap –-fstype="swap"
%packages
@core
wget curl vim-enhanced net-tools git sudo openssh-server
%end
%post ––log=/root/ks-post.log
yum -y update && yum clean all
echo "Cobbler 自动化部署完成"> /etc/motd
%end
七、配置 DHCP 服务
a) 使用 Cobbler 自带 DHCP
# cobbler sync # 同步所有配置,包括生成 dhcp.template 文件
# systemctl enable ––now cobblerdhcpd.service # 启动并持久化
# firewall-cmd ––add-service=dhcp ––permanent && firewall-cmd ––reload # 若未关闭防火墙时使用
b) 集成已有 DHCP
Cobbler 会在 /etc/dhcp/dhcpd.conf.cobbler_template 中生成需要的子网段配置,复制到原有 DHCP 配置文件后 reload 即可。
八、配置 PXE/TFTP 引导服务
TFTP 根目录默认位于 /var/lib/tftpboot确保以下文件存在:
-
/var/lib/tftpboot/pxelinux.cfg/default -
/var/lib/tftpboot/pxelinux.cfg/01-xx-xx-xx-xx-xx-xx -
/var/lib/tftpboot/pxelinux.cfg/menu.centos7 -
/var/lib/tftpboot/pxelinux.cfg/menu.centos8 -
/var/lib/tftpboot/pxelinux.cfg/menu.cobblermenu -
关键文件:
/var/lib/tftpboot/pxelinux.cfg/default → menu.cobblermenu /var/lib/tftpboot/menu.cobblermenu → 包含所有已发布的 profile 链接。
同步 PXE 配置:
# cobbler sync # 同步 TFTP 引导文件和 HTTP 镜像
# systemctl restart xinetd tftp # 确保服务生效
# ls -l /var/lib/tftpboot | grep pxelinux
九、使用 Web 界面管理与监控
Cobbell 自带的 Web UI 默认监听 :80** 或 **:8080**。访问方式如下:
# firewall-cmd ––add-service=http ––permanent && firewall-cmd ––reload
打开浏览器访问:http://192.168.10.10:80 或 http://192.... :8080
使用者名的观点是,root
密码的观点是,在 /etc/cobbler/users.conf 中定义或使用程序 root 密码。通过 UI 可直观看到已导入的 distro、profile、程序列表还有任务日志。
十、实战测试:批量 PXE 启动装机
- 在目标机器 BIOS/UEFI 中开启 “Network/PXE Boot”。其实,
- 保存并重启。机器会从 TFTP 拉取 pxelinux.cfg/default → menu.cobblermenu → 您创建的 profile 列表。 \
- Select “CentOS 7 – centos7‑base” 并回车,即可进入自动化 Kickstart 安装流程。
-
Cobbeler 在后台实时记录每台机器的状态,可在 Web UI 或执行
cobbler status查看。 -
使用
cobbler report输出详细日志,用于排查失败节点。
\
<\/ol>
十一、常见问题及调优建议
\-
\
- \ PXE 无法获取引导文件:\ 检查 TFTP 服务是否运行 并确认防火墙放行 UDP 69。\ \
-
\
Kickstart 报错 “No such file or directory” :\
确认
url参数指向正确的 HTTP 镜像方法,且 Apache 已对/cobbler/repo_mirror开放访问。不过,\
\
-
\
DHCP IP 冲突或分配不到地址:\
若使用外部 DHCP。请确保
manage_dhcp = 0并手动将 Cobbeler 的 MAC 对应条目加入原有 DHCP 范围。\
\
-
\
Cobbeler 同步后仍看不到新 profile:\
执行
cobbler reposync && cobbler sync强制重新同步;检查/etc/cobble r/settings中manage_dns与manage_dhcp是否匹配实际需求。\
\
-
\
SElinux 报错 TFTP 权限:\
若不想禁用 SELinux,可执行
setsebool -P tftp_home_dir on并为/var/lib/tftpboot添加相应上下文 .\
\
<\/ul>\
十二、与收益
\通过上述步骤。你已经实现了一个基于 CentOS Cobbeler + PXE 的完整批量装机程序,主要收益包括:
\-
\
- 单次操作即可部署数十甚至上百台机器,大幅降低人力成本;老实说,<\/ li>\
- Kickstart 脚本统一硬盘分区、软件源与安全基线。提高程序一致性,<\/ li>\
- 统一管理 IP 分配与引导文件,避免手工配置导致的冲突与错误;<\/ li> \ \
- Web UI+CLI 双管齐下可视化监控部署进度,也方便脚本化调用;按理说,<\/ li> \ \
-
后续扩容只需新增 Profile 或修改 Kickstart。无需重新编写安装手册,<\/ li>
\
<\/ul>
\
如果你的业务正面临“装机慢”“配置乱”“运维难”这些痛点。不妨立即搭建上述网站,让自动化成为日常运营的一部分吧!老实说,<\/p>
一、使用者痛点概述
在大规模服务器或工作站交付时常见的痛点包括:
- 手动逐台安装程序耗时且易出错;
- IP 地址分配混乱导致 DHCP 冲突;话说回来,
- 每台机器的配置细节不统一。后期维护成本高,
- 缺少统一的监控与日志,无法快速定位部署失败原因。
使用 CentOS Cobbler 与 PXE 启动 可以一次性解决以上问题,自动运行、批量、可视化的装机流程。
二、环境准备
硬件与网络要求
- 一台运行 CentOS的 Cobbler 服务器,推荐使用千兆以上网络。
- 目标机器需支持 PXE启动,并能从同一网段获取 IP。话说回来,
- 确保 TFTP、DHCP、HTTP/HTTPS 服务端口未被防火墙阻断。
程序基础设置
关闭 SELinux 与防火墙:
# setenforce 0
# sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
# systemctl stop firewalld
# systemctl disable firewalld
三、安装 Cobbler 与相关组件
# yum install -y epel-release
# yum install -y cobbler cobbler-web cobbler-dhcp cobbler-pxe cobbler-pxe-tftp \
cobbler-syslinux cobbler-ksvalidator
# yum install -y dhcp tftp-server httpd xinetd
# systemctl enable --now httpd xinetd tftp
# systemctl enable --now cobblerd
四、导入操作程序镜像
Cobbler 必须先把 ISO 内容导入到本地仓库:
# cobbler import --name=centos7 --path=/data/isos/CentOS-7-x86_64-DVD.iso --arch=x86_64
# cobbler import --name=centos8 --path=/data/isos/CentOS-8-x86_64-BaseOS.iso --arch=x86_64
五、配置 Cobbler 主设置
编辑 /etc/cobbler/settings:
# vi /etc/cobbler/settings
server这方面,192.168.10.10 # Cobbler 服务器 IP
next_server: 192.168.10.10 # TFTP/PXE 引导文件所在服务器 IP
manage_dhcp: 1 # 是否让 Cobbler 管理 DHCP
dhcp_template: /etc/cobbler/dhcp.template
default_password_crypted: "$6$randomsalt$..."
pxe_just_once: 0 # 多次 PXE 启动均可获取配置
manage_dns: 0 # 如需 DNS 管理请设为1并配置相应模板
...
六、创建部署 Profile 与 Kickstart 模板
a) 创建基础 Profile
# cobbler profile add --name=centos7-base \
--distro=centos7 \
--kickstart=/var/lib/cobbler/kickstarts/centos7-base.ks \
--enable-menu=yes
b) 编写 Kickstart 示例(保存为 /var/lib/cobbler/kickstarts/centos7-base.ks)
#platform=x86。AMD64,or Intel EM64T
install
url --url="http://192.168.10.10/cobbler/repo_mirror/centos7/x86_64"
lang en_US.UTF-8
keyboard us
network --bootproto=dhcp --device=eth0
rootpw --iscrypted $6$randomsalt$...
firewall --enabled --service=ssh
authconfig --enableshadow --passalgo=sha512
timezone Asia/Shanghai
bootloader --location=mbr
clearpart --all --initlabel
part /boot --fstype="xfs" --size=500
part pv.01 --fstype="lvmpv" --grow # LVM Physical Volume
volgroup vg_root pv.01
logvol / --vgname=vg_root --size=20480 --name=root \
--fstype="xfs"
logvol swap --vgname=vg_root --size=4096 \
--name=swap –-fstype="swap"
%packages
@core
wget curl vim-enhanced net-tools git sudo openssh-server
%end
%post ––log=/root/ks-post.log
yum -y update && yum clean all
echo "Cobbler 自动化部署完成"> /etc/motd
%end
七、配置 DHCP 服务
a) 使用 Cobbler 自带 DHCP
# cobbler sync # 同步所有配置,包括生成 dhcp.template 文件
# systemctl enable ––now cobblerdhcpd.service # 启动并持久化
# firewall-cmd ––add-service=dhcp ––permanent && firewall-cmd ––reload # 若未关闭防火墙时使用
b) 集成已有 DHCP
Cobbler 会在 /etc/dhcp/dhcpd.conf.cobbler_template 中生成需要的子网段配置,复制到原有 DHCP 配置文件后 reload 即可。
八、配置 PXE/TFTP 引导服务
TFTP 根目录默认位于 /var/lib/tftpboot确保以下文件存在:
-
/var/lib/tftpboot/pxelinux.cfg/default -
/var/lib/tftpboot/pxelinux.cfg/01-xx-xx-xx-xx-xx-xx -
/var/lib/tftpboot/pxelinux.cfg/menu.centos7 -
/var/lib/tftpboot/pxelinux.cfg/menu.centos8 -
/var/lib/tftpboot/pxelinux.cfg/menu.cobblermenu -
关键文件:
/var/lib/tftpboot/pxelinux.cfg/default → menu.cobblermenu /var/lib/tftpboot/menu.cobblermenu → 包含所有已发布的 profile 链接。
同步 PXE 配置:
# cobbler sync # 同步 TFTP 引导文件和 HTTP 镜像
# systemctl restart xinetd tftp # 确保服务生效
# ls -l /var/lib/tftpboot | grep pxelinux
九、使用 Web 界面管理与监控
Cobbell 自带的 Web UI 默认监听 :80** 或 **:8080**。访问方式如下:
# firewall-cmd ––add-service=http ––permanent && firewall-cmd ––reload
打开浏览器访问:http://192.168.10.10:80 或 http://192.... :8080
使用者名的观点是,root
密码的观点是,在 /etc/cobbler/users.conf 中定义或使用程序 root 密码。通过 UI 可直观看到已导入的 distro、profile、程序列表还有任务日志。
十、实战测试:批量 PXE 启动装机
- 在目标机器 BIOS/UEFI 中开启 “Network/PXE Boot”。其实,
- 保存并重启。机器会从 TFTP 拉取 pxelinux.cfg/default → menu.cobblermenu → 您创建的 profile 列表。 \
- Select “CentOS 7 – centos7‑base” 并回车,即可进入自动化 Kickstart 安装流程。
-
Cobbeler 在后台实时记录每台机器的状态,可在 Web UI 或执行
cobbler status查看。 -
使用
cobbler report输出详细日志,用于排查失败节点。
\
<\/ol>
十一、常见问题及调优建议
\-
\
- \ PXE 无法获取引导文件:\ 检查 TFTP 服务是否运行 并确认防火墙放行 UDP 69。\ \
-
\
Kickstart 报错 “No such file or directory” :\
确认
url参数指向正确的 HTTP 镜像方法,且 Apache 已对/cobbler/repo_mirror开放访问。不过,\
\
-
\
DHCP IP 冲突或分配不到地址:\
若使用外部 DHCP。请确保
manage_dhcp = 0并手动将 Cobbeler 的 MAC 对应条目加入原有 DHCP 范围。\
\
-
\
Cobbeler 同步后仍看不到新 profile:\
执行
cobbler reposync && cobbler sync强制重新同步;检查/etc/cobble r/settings中manage_dns与manage_dhcp是否匹配实际需求。\
\
-
\
SElinux 报错 TFTP 权限:\
若不想禁用 SELinux,可执行
setsebool -P tftp_home_dir on并为/var/lib/tftpboot添加相应上下文 .\
\
<\/ul>\
十二、与收益
\通过上述步骤。你已经实现了一个基于 CentOS Cobbeler + PXE 的完整批量装机程序,主要收益包括:
\-
\
- 单次操作即可部署数十甚至上百台机器,大幅降低人力成本;老实说,<\/ li>\
- Kickstart 脚本统一硬盘分区、软件源与安全基线。提高程序一致性,<\/ li>\
- 统一管理 IP 分配与引导文件,避免手工配置导致的冲突与错误;<\/ li> \ \
- Web UI+CLI 双管齐下可视化监控部署进度,也方便脚本化调用;按理说,<\/ li> \ \
-
后续扩容只需新增 Profile 或修改 Kickstart。无需重新编写安装手册,<\/ li>
\
<\/ul>
\
如果你的业务正面临“装机慢”“配置乱”“运维难”这些痛点。不妨立即搭建上述网站,让自动化成为日常运营的一部分吧!老实说,<\/p>

