在 Ubuntu 上使用 Cobbler 实现自动化部署
一 架构与前置条件
- 组件与职责:Cobbler 负责整合 DHCP/TFTP/HTTP、镜像与应答文件;客户端通过 PXE 启动,自动获取安装源与 preseed(Kickstart) 完成无人值守安装。
- 网络与服务:准备一个网段(如 192.168.1.0/24)、网关(如 192.168.1.1)、DNS(如 8.8.8.8),并规划 Cobbler 服务器 IP(如 192.168.1.2) 作为 next-server;确保客户端 BIOS 开启 PXE 启动。
- 工具与权限:安装必要组件(含 cobbler/cobbler-web、tftpd-hpa、xinetd、isc-dhcp-server、debmirror),以 root 或具备 sudo 权限执行;如启用防火墙,放行 TFTP(69/udp)、HTTP(80/tcp) 及 Cobbler API(25150–25151/tcp)。
二 安装与基础配置
- 安装软件包
- Ubuntu 20.04/22.04 示例:
- sudo apt-get update
- sudo apt-get install -y cobbler cobbler-web tftpd-hpa xinetd isc-dhcp-server debmirror
- 启动服务与获取引导文件
- sudo systemctl enable --now cobblerd
- sudo cobbler get-loaders
- 基础校验与修正
- sudo cobbler check(按提示修正,例如设置 server 与 next_server、开启 TFTP、修正 debmirror 配置等)
- 关键配置项(/etc/cobbler/settings)
- server:Cobbler 服务器地址(如 192.168.1.2)
- next_server:同 server(用于 DHCP filename/next-server 的自动下发)
- manage_dhcp:是否由 Cobbler 管理 DHCP(1=托管,0=由外部 DHCP 管理)
- 其他:如默认 default_kickstart、时区/语言等按需调整。
三 网络与 PXE 配置
- 方案 A:由 Cobbler 托管 DHCP(简单、一体化)
- 编辑模板:/etc/cobbler/dhcp.template,示例如下(按实际网段修改):
- 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.168.4.4;
- filename “pxelinux.0”;
- next-server 192.168.1.2;
- }
- 应用并重启:
- sudo cobbler sync
- sudo systemctl restart isc-dhcp-server
- 方案 B:使用现有 DHCP(不托管)
- 在现有 DHCP 配置中加入:
- allow booting; allow bootp;
- filename “pxelinux.0”;
- next-server <Cobbler_IP>;
- 注意:若使用 Cobbler 的 DHCP 模板,运行 cobbler sync 可能覆盖现有 dhcpd.conf,务必先备份。
- TFTP 启用
- 编辑 /etc/xinetd.d/tftp,将 disable = yes 改为 disable = no
- sudo systemctl enable --now tftp xinetd
- 防火墙放行(如启用 firewalld)
- sudo firewall-cmd --permanent --add-service=tftp
- sudo firewall-cmd --permanent --add-service=http
- sudo firewall-cmd --permanent --add-port=25150-25151/tcp
- sudo firewall-cmd --reload。
四 导入镜像与创建 Profile
- 导入 Ubuntu 镜像
- 方式 1(ISO 挂载导入,推荐):
- sudo mount -o loop /path/to/ubuntu-20.04.iso /mnt
- sudo cobbler import --path=/mnt --name ubuntu-20.04 --breed ubuntu --os-version focal
- 方式 2(在线镜像,较慢):
- sudo cobbler import --path=/var/www/html/ubuntu-mirror/ --name ubuntu-20.04 --breed ubuntu --os-version focal
- 导入后可用 cobbler distro list / cobbler profile list 查看。
- 创建应答文件(preseed/seed)
- 示例(保存到 /var/lib/cobbler/kickstarts/ubuntu-20.04.seed):
- d-i debian-installer/locale string en_US.UTF-8
- d-i keyboard-configuration/layoutcode string us
- d-i netcfg/choose_interface select auto
- d-i netcfg/get_nameservers string 8.8.8.8
- d-i netcfg/get_ipaddress string 192.168.1.101
- d-i netcfg/get_netmask string 255.255.255.0
- d-i netcfg/get_gateway string 192.168.1.1
- d-i netcfg/confirm_static boolean true
- d-i mirror/country string manual
- d-i mirror/http/hostname string $server
- d-i mirror/http/directory string /ks_mirror/ubuntu-20.04
- d-i mirror/http/proxy string
- d-i clock-setup/utc boolean true
- d-i time/zone string Asia/Shanghai
- d-i partman-auto/method string regular
- d-i partman-auto/choose_recipe select atomic
- d-i partman-partitioning/confirm_write_new_label boolean true
- d-i partman/confirm boolean true
- d-i partman/confirm_nooverwrite boolean true
- d-i pkgsel/include string openssh-server
- d-i pkgsel/upgrade select none
- d-i grub-installer/only_debian boolean true
- d-i grub-installer/with_other_os boolean true
- d-i finish-install/reboot_in_progress note
- 创建 Profile 并关联应答文件
- sudo cobbler profile add --name ubuntu-20.04-profile --distro ubuntu-20.04-x86_64 --kickstart /var/lib/cobbler/kickstarts/ubuntu-20.04.seed
- 同步配置
- sudo cobbler sync(每次变更后执行,使 DHCP/TFTP/HTTP 生效)。
五 部署与验证
- 注册主机(按 MAC 精确装机,可选)
- sudo cobbler system add --name host01 --profile ubuntu-20.04-profile --mac AA:BB:CC:DD:EE:FF --netboot-enabled true
- 如需批量自动分配,可不预先注册,由 DHCP 动态分配后按 Profile 自动安装。
- 客户端装机
- 目标主机 BIOS 设置 PXE 第一启动,上电后将自动获取 IP/DNS、下载 pxelinux.0 与安装内核/initrd,读取 preseed 完成无人值守安装。
- 常用排错与验证
- 查看服务与配置:systemctl status cobblerd tftp xinetd isc-dhcp-server;cat /etc/cobbler/settings | egrep ‘server|next_server|manage_dhcp’
- 校验与同步:sudo cobbler check;sudo cobbler sync
- 查看导入结果:cobbler distro list;cobbler profile list;cobbler system list
- 日志定位:/var/log/cobbler/、/var/log/syslog(DHCP/TFTP 相关)。