如何通过Cobbler批量安装系统
小樊
36
2025-12-20 01:36:11
Cobbler批量安装系统实操指南
一 环境准备与组件安装
- 建议准备一台与待装机同二层网络的服务器,安装常用组件:Cobbler、DHCP、TFTP、HTTPD、xinetd、rsync、pykickstart;若需部署 Ubuntu/Debian,额外安装 debmirror。在 CentOS 7 上可用 EPEL 源安装:
- 安装组件:yum install -y cobbler cobbler-web dhcp tftp-server httpd pykickstart rsync xinetd debmirror
- 启动服务并设置开机自启:systemctl enable --now cobblerd httpd xinetd
- 加载 PXE 引导文件:cobbler get-loaders
- 说明:Cobbler 可集中管理 PXE、DHCP、DNS、TFTP、rsync 等,用于无人值守批量装机。
二 核心配置
- 修改关键配置(/etc/cobbler/settings),将地址替换为实际环境值:
- server 与 next_server:指向 Cobbler 服务器地址(如 10.0.0.5)
- manage_dhcp:设为 1(由 Cobbler 管理 DHCP)
- default_password_crypted:设置装机后 root 的默认密码(见下一节)
- 示例(命令行一键替换):
- sed -ri ‘s/^(next_server:).*/\1 10.0.0.5/’ /etc/cobbler/settings
- sed -ri ‘s/^(server:).*/\1 10.0.0.5/’ /etc/cobbler/settings
- sed -ri ‘s/^(manage_dhcp:).*/\1 1/’ /etc/cobbler/settings
- 配置 DHCP 模板(/etc/cobbler/dhcp.template),按网段调整:
- subnet 10.0.0.0 netmask 255.255.255.0 {
- option routers 10.0.0.2;
- option domain-name-servers 114.114.114.114;
- range dynamic-bootp 10.0.0.100 10.0.0.200;
- filename “/pxelinux.0”;
- next-server $next_server;
- }
- 启用 TFTP 与 rsync(/etc/xinetd.d/tftp、/etc/xinetd.d/rsync):将 disable = yes 改为 disable = no,然后重启 xinetd
- 防火墙与 SELinux(测试环境常用做法):
- 关闭防火墙:systemctl stop firewalld && systemctl disable firewalld
- 关闭 SELinux:setenforce 0 并 sed -i ‘s/^SELINUX=.*/SELINUX=disabled/’ /etc/selinux/config
- 检查并同步配置:
- cobbler check(逐项修复告警)
- cobbler sync(使 DHCP/TFTP 等模板生效)
三 导入镜像与创建安装配置
- 导入发行版镜像(ISO 或挂载目录):
- 挂载 ISO:mount -o loop /path/to.iso /mnt
- 导入:cobbler import --path=/mnt --name=CentOS-7-x86_64 --arch=x86_64
- 导入后镜像位于:/var/www/cobbler/ks_mirror/-/
- 创建 Kickstart(RHEL/CentOS 使用 ks.cfg,Ubuntu 使用 preseed/seed):
- 示例 CentOS Kickstart(/var/lib/cobbler/kickstarts/centos7.ks):
- install
- url --url=“http://$server/cobbler/ks_mirror/CentOS-7-x86_64”
- rootpw --iscrypted $default_password_crypted
- firewall --disabled
- selinux --disabled
- timezone Asia/Shanghai
- bootloader --location=mbr --driveorder=sda --append=“crashkernel=auto”
- clearpart --all --initlabel
- autopart
- %packages
- @core
- %end
- 创建 Profile 绑定 Distro 与 Kickstart:
- cobbler profile add --name=CentOS-7-x86_64-base --distro=CentOS-7-x86_64-x86_64 --kickstart=/var/lib/cobbler/kickstarts/centos7.ks
- Ubuntu 预置文件(preseed/seed)常用项(示例片段):
- d-i debian-installer/locale string en_US
- d-i console-setup/ask_detect boolean false
- d-i keyboard-configuration/layoutcode string us
- 更多可按需添加(分区、镜像源、用户等)
四 批量装机与无人值守
- 方式一(推荐)按主机记录全自动装机:
- 添加 system(使用待装机的 MAC 实现零人工选择):
- cobbler system add --name=node01 --profile=CentOS-7-x86_64-base
–interface=eth0 --mac=52:54:00:xx:xx:xx
–ip-address=10.0.0.11 --netmask=255.255.255.0 --gateway=10.0.0.2
–static=1 --dns-name=node01.example.com
- 同步并装机:cobbler sync;客户端从 PXE 启动后将自动获取 IP、加载引导并安装
- 方式二 通过引导菜单选择 Profile:
- cobbler sync 后,客户端 PXE 启动进入菜单,选择相应 Profile 即可自动安装
- 防止重复重装(可选):在 /etc/cobbler/settings 中将 pxe_just_once: 1,装机完成后自动禁用 PXE 引导
五 常见问题与排错要点
- cobbler check 报错或 tftp 超时:确保已执行 cobbler get-loaders;检查 /etc/xinetd.d/tftp 的 disable=no 与 xinetd 已启动;必要时 cobbler sync 再次同步
- DHCP 不分配地址或找不到启动文件:核对 /etc/cobbler/dhcp.template 的网段、网关、DNS、range 与 next-server=$next_server;执行 cobbler sync 使配置下发
- 导入镜像后 ks 路径不可用:确认镜像已导入至 /var/www/cobbler/ks_mirror/,并在 Kickstart 中使用 $server 变量(如 http://$server/…);必要时 cobbler distro edit 调整 –ksmeta(如 tree=http://@@http_server@@/cobbler/links/…)
- Ubuntu/Debian 导入失败:安装 debmirror 并在 /etc/debmirror.conf 中注释 @dists 与 @arches 相关行
- Web 界面或 API 异常:确认 httpd 已启动且加载 mod_wsgi(/etc/httpd/conf.d/wsgi.conf 中 LoadModule 未被注释)