通过 Cobbler 批量安装 Debian 系统的实操指南
一 架构与前置条件
- 网络与服务角色:一台 Cobbler 服务器提供 DHCP/TFTP/HTTP,客户端以 PXE 启动,自动获取安装源与自动化应答文件完成无人值守安装。
- 服务组件:常见组合为 cobblerd + httpd + tftp + dhcp(Cobbler 可托管 DHCP/TFTP 配置,也可由外部服务托管)。
- 镜像准备:下载 Debian 安装 ISO,用于导入发行版与安装文件。
- 网络与权限:确保客户端与服务器二层互通;同一网段避免多个 DHCP 冲突;如为生产环境,建议保留防火墙策略并仅开放必要端口(DHCP 67/68、TFTP 69、HTTP 80)。
二 部署步骤
- 安装 Cobbler 与依赖
- RHEL/CentOS 系:
- 安装:yum -y install cobbler cobbler-web tftp-server dhcp httpd xinetd
- 启动:systemctl enable --now httpd cobblerd
- Debian/Ubuntu 系:
- 安装:apt-get update && apt-get install cobbler cobbler-web dhcp3-server tftpd-hpa xinetd
- 启动:systemctl enable --now cobblerd cobbler-web tftpd-hpa isc-dhcp-server
- 基础配置
- 编辑 /etc/cobbler/settings:
- 设置 server 与 next_server 为 Cobbler 服务器地址(可达的 IP/主机名)。
- 按需开启 manage_dhcp / manage_tftp(若由 Cobbler 托管,后续用模板生成配置)。
- 启动/启用 TFTP:编辑 /etc/xinetd.d/tftp,将 disable = yes 改为 no,并 systemctl restart xinetd。
- 获取网络引导文件:执行 cobbler get-loaders,确保 pxelinux.0、menu.c32 等就位(用于 PXE 菜单与引导)。
- 可选:若需管理 Debian 仓库/镜像,安装 debmirror(debmirror 包用于 Debian 镜像维护)。
- 导入 Debian 镜像
- 挂载 ISO:mount -o loop /path/to/debian.iso /mnt
- 导入镜像:cobbler import --path=/mnt --name=debian- --arch=amd64
- 卸载 ISO:umount /mnt
- 说明:import 会创建 Distro/Profile,后续可基于该 Profile 批量部署。
- 配置 DHCP(两种常见方式)
- 方式 A(Cobbler 托管):编辑 /etc/cobbler/dhcp.template,设置子网、地址池、网关、DNS、next-server 与 filename “pxelinux.0”,然后 cobbler sync 自动下发到 /etc/dhcp/dhcpd.conf。
- 方式 B(外部 DHCP):在 /etc/dhcp/dhcpd.conf 的 subnet 段加入:
- range 192.168.1.100 192.168.1.200;
- option routers 192.168.1.1;
- option domain-name-servers 8.8.8.8, 8.8.4.4;
- filename “pxelinux.0”;
- next-server 192.168.1.2;
- 创建系统与自动化应答
- 方式 1(推荐,按主机定制):使用 cobbler system add 指定 –name、–mac、–profile、–ip、–netmask、–gateway、–hostname、–interface,并设置 –netboot-enabled=true,再 cobbler sync。
- 方式 2(通用无人值守):为 Profile 指定 Kickstart/Preseed 应答文件(Debian 常用 preseed),然后 cobbler sync。
- 使配置生效
- 执行 cobbler sync,使 DHCP、TFTP、PXE 菜单等配置落盘并生效。
- 客户端安装
- 目标主机设置 PXE 启动,加电后自动获取 IP、下载引导文件与安装介质,按 Profile/System 的配置完成无人值守安装。
三 关键命令与示例
- 常用运维命令
- 状态与检查:cobbler status;cobbler check(按提示修复配置)
- 同步:cobbler sync
- 导入镜像:cobbler import --path=/mnt --name=debian-12 --arch=amd64
- 添加系统:cobbler system add --name=node01 --mac=00:11:22:33:44:55 --profile=debian-12-x86_64 --ip=192.168.1.101 --netmask=255.255.255.0 --gateway=192.168.1.1 --hostname=node01.example.com --interface=eth0 --netboot-enabled=true
- 启用 PXE:cobbler system edit --name=node01 --netboot-enabled=true
- DHCP 配置片段(外部 DHCP 示例)
- 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 domain-name-servers 8.8.8.8, 8.8.4.4;
- filename “pxelinux.0”;
- next-server 192.168.1.2;
- }
- 自动化应答文件提示
- Debian 使用 preseed 进行无人值守安装(可配合 Cobbler 的 preseed 模板或自建),常见项目包括:语言/键盘、root 密码/SSH 密钥、分区方案、镜像源、包选择、引导加载器安装位置等。将 preseed 关联到 Profile 后,cobbler sync 即可批量生效。
四 常见问题与排查
- 客户端无法 PXE 启动
- 核对 next-server 是否指向 Cobbler 的 TFTP 地址,filename 是否为 pxelinux.0;检查二层连通与交换机/VLAN 策略。
- cobbler check 常见项
- server/next_server 不能是 localhost/127.0.0.1;/etc/xinetd.d/tftp 需启用;执行 cobbler get-loaders 补齐引导文件;必要时安装 debmirror;修改 default_password_crypted 提升安全性。
- 多个 DHCP 冲突
- 同一网段仅保留一个 DHCP 服务;若由外部 DHCP 托管,Cobbler 侧不要开启 manage_dhcp,避免配置互相覆盖。
- 导入镜像后找不到可启动项
- 确认 import 成功且生成了 Distro/Profile;执行 cobbler sync 刷新 PXE 菜单;必要时检查 /var/lib/tftpboot/pxelinux.cfg/default 是否包含相应 label。
- 防火墙/SELinux 影响
- 测试环境可临时关闭以排除干扰;生产环境建议按需放行 DHCP/TFTP/HTTP 端口或改用策略放行对应服务。