温馨提示×

Ubuntu Cobbler如何实现多版本共存

小樊
33
2025-12-09 07:19:25
栏目: 智能运维

Ubuntu 环境下使用 Cobbler 实现多版本共存的落地方案

一、架构与原理

  • 通过 PXE 引导,由 DHCP 分配地址并指向下载启动文件,TFTP 传输引导程序,客户端进入 Cobbler 菜单后按需选择要安装的 Ubuntu 版本/架构。Cobbler 以对象模型管理安装源:Distro(发行版)→ Profile(应答/内核参数/仓库)→ System(主机粒度网络与主机名),一次部署即可提供多版本选择,适合同时维护 20.04/22.04/24.04 等版本的环境。

二、基础环境与服务配置

  • 安装组件(Ubuntu 示例):
    • sudo apt update
    • sudo apt install cobbler cobbler-web isc-dhcp-server tftpd-hpa xinetd
  • 配置 DHCP(/etc/dhcp/dhcpd.conf,按现场网段调整):
    • 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; # Cobbler 服务器 IP
      • }
    • 重启服务:sudo systemctl restart isc-dhcp-server
  • 配置 TFTP(/etc/xinetd.d/tftp):
    • server_args = -s /var/lib/tftpboot
    • 重启服务:sudo systemctl restart xinetd
  • 启动 Cobbler 并自检:
    • sudo systemctl enable --now cobblerd
    • sudo cobbler get-loaders
    • sudo cobbler check
    • 关键项:/etc/cobbler/settings 中的 servernext_server 必须填写为可达的 Cobbler 服务器地址(不能是 127.0.0.1)。

三、导入多版本 Ubuntu 镜像

  • 准备各版本的 ISO(如:ubuntu-20.04.x-live-server-amd64.iso、ubuntu-22.04.x-live-server-amd64.iso、ubuntu-24.04.x-live-server-amd64.iso),分别挂载并导入:
    • 挂载示例:sudo mount -o loop,ro /iso/ubuntu-22.04.5-live-server-amd64.iso /mnt
    • 导入示例:cobbler import --path=/mnt --name Ubuntu22
    • 同步:cobbler sync
  • 导入后,Cobbler 会为同一镜像生成对应的 DistroProfile(常见命名包含内核与架构,如:Ubuntu22-casper-x86_64)。重复以上步骤导入 20.0424.04。导入完成后可通过 cobbler distro list、cobbler profile list 查看对象。

四、为不同版本配置自动安装与网络参数

  • Ubuntu 22.04/24.04 推荐使用 subiquity + cloud-init 的 autoinstall 方式:
    • 将 ISO 复制到 Web 目录,便于安装器离线获取安装介质:
      • mkdir -p /var/www/cobbler/pub/cloud-init/Ubuntu24
      • cp /iso/ubuntu-24.04.2-live-server-amd64.iso /var/www/cobbler/pub/cloud-init/Ubuntu24/
    • 为对应 Distro 设置内核参数(指向本地 ISO 与 autoinstall 入口):
      • cobbler distro edit --name Ubuntu24-casper-x86_64
        –kernel-options ‘root=/dev/ram0 ramdisk_size=1500000 ip=dhcp
        url=http://192.168.8.10/cobbler/pub/cloud-init/Ubuntu24/ubuntu-24.04.2-live-server-amd64.iso
        autoinstall cloud-config-url=http://192.168.8.10/cblr/svc/op/autoinstall/profile/Ubuntu24-casper-x86_64’
    • 为 Profile 指定 autoinstall 模板(cloud-init 用户数据):
      • cobbler profile edit --name Ubuntu24-casper-x86_64 --autoinstall cloud-init_user-data
    • 如需为某台主机固化网络(可选):
      • cobbler system add --name Ubuntu24-auto --profile Ubuntu24-casper-x86_64
        –mac-address 00:50:56:25:EB:96 --static true
        –ip-address 192.168.8.15 --netmask 255.255.255.0 --gateway 192.168.8.2
        –name-servers 114.114.114.114 --hostname Ubuntu24 --netboot-enabled true
      • 说明:对需要快速定位的节点,绑定 MAC 能显著缩短发现与选择时间。
    • 20.04 可按相同思路配置(镜像与路径替换为 20.04 对应对象)。
  • Ubuntu 18.04/20.04 也可沿用 preseed(seed) 应答文件方式(示例片段):
    • d-i mirror/http/hostname string $http_server
    • d-i mirror/http/directory string $install_source_directory
    • d-i time/zone string Asia/Shanghai
    • d-i clock-setup/ntp-server string cn.pool.ntp.org
    • d-i partman-auto/disk string /dev/sda
    • d-i partman-auto/method string lvm
    • d-i partman-auto-lvm/guided_size string 100%
    • 在 Profile 中指定:cobbler profile edit --name ubuntu-20.04 --kickstart /var/lib/cobbler/kickstarts/ubuntu-20.04.seed
  • 每次修改后执行:cobbler sync,使 DHCP/TFTP/菜单生效。

五、支持 Ubuntu 24.04 与日常运维要点

  • 支持 Ubuntu 24.04(Noble Numbat) 的识别:
    • 编辑 /var/lib/cobbler/distro_signatures.json,在合适位置新增 “noble” 条目(注意 JSON 语法与逗号),示例:
      • “noble”: {
        • “signatures”: [“dists”,“.disk”],
        • “version_file”: “Release|info”,
        • “version_file_regex”: “Suite: noble|Ubuntu 24.04”,
        • “supported_arches”: [“amd64”,“i386”],
        • “supported_repo_breeds”: [“apt”],
        • “kernel_file”: “(linux|vmlinuz(.*))”,
        • “initrd_file”: “initrd($|.gz$|.lz$)”,
        • “isolinux_ok”: false,
        • “default_autoinstall”: “”,
        • “kernel_options”: “”,
        • “kernel_options_post”: “”,
        • “template_files”: “”,
        • “boot_files”: [],
        • “boot_loaders”: {}
        • }
    • 修改后重启 cobblerd:systemctl restart cobblerd;同步:cobbler sync
  • 防火墙与端口(若启用防火墙):
    • DHCP:67/udp、68/udp
    • HTTP/HTTPS:80/tcp、443/tcp
    • 示例(firewalld):firewall-cmd --permanent --add-port={67,68}/udp --add-port={80,443}/tcp && firewall-cmd --reload
  • 常用排错与验证:
    • cobbler check(逐项修复告警)
    • cobbler sync(每次变更必执行)
    • cobbler distro list / profile list / system list(核对对象)
    • 客户端以 PXE 启动,进入菜单选择目标版本;必要时抓包或查看 /var/log/ 下相关服务日志定位问题。

0