温馨提示×

Cobbler如何简化Ubuntu系统更新流程

小樊
38
2026-01-09 16:01:43
栏目: 智能运维

Cobbler简化Ubuntu系统更新的总体思路

  • 通过集中托管APT仓库镜像预置的自动安装模板(preseed/cloud-init),把补丁与系统更新变成“重装即最新”的可重复流程。
  • 借助PXE + DHCP + TFTP + HTTP统一引导,配合Profile/System对象,做到按批次、按主机一键重装并自动完成更新。
  • 每次变更后用cobbler sync下发配置,确保网络引导与仓库指向一致。

一、准备可复用的更新源与镜像

  • 导入Ubuntu安装介质,生成可被PXE引导的Distro/Profile

    • 挂载ISO:mount -o loop /path/to/ubuntu-.iso /mnt
    • 导入镜像:cobbler import --name=Ubuntu --path=/mnt --breed=ubuntu
    • 查看与校验:cobbler distro list、cobbler profile list
    • 变更后同步:cobbler sync
      说明:import会自动提取内核与initrd,生成对应的发行版与默认profile,便于后续统一引导与自动化安装。
  • 建立本地APT镜像源(推荐做法):

    • 安装debmirror并配置/etc/debmirror.conf(注释@dists与@arches以适配Ubuntu仓库结构)。
    • 使用cobbler reposync定期同步官方仓库到本地,作为内部更新源;需要时通过cobbler repo add/enable并在profile中绑定,实现“离线/内网快速更新”。

二、用预置模板把“更新”嵌入重装流程

  • 方案A(传统Ubuntu Server):使用preseed自动安装,并在安装阶段注入更新动作

    • 在profile中指定kickstart:cobbler profile edit --name= --kickstart=/var/lib/cobbler/kickstarts/ubuntu.preseed
    • 在preseed中配置安装后执行:
      • 选择镜像源(优先本地cobbler镜像)
      • 执行非交互升级:
        d-i pkgsel/upgrade select full-upgrade
        d-i pkgsel/update-policy select none
      • 安装后脚本中可加入:
        apt-get update && unattended-upgrade -d -v && reboot
        说明:preseed可覆盖分区、软件包、网络与postinstall脚本,适合把“更新到最新”作为安装的一部分。
  • 方案B(Ubuntu 20.04+ 云镜像/Subiquity):使用cloud-init自动安装

    • 准备user-data(可基于官方cloud-init模板),在runcmd中执行更新:
      • 选择镜像源(http:///cblr/pub/… 或本地APT镜像)
      • apt-get update && apt-get full-upgrade -y && reboot
    • 在Cobbler中为对应distro设置内核启动参数,使其从ISO或HTTP源引导并触发autoinstall:
      • 示例(ISO方式):
        cobbler distro edit --name= --kernel-options ‘root=/dev/ram0 ramdisk_size=1500000 ip=dhcp url=http://<cobbler_ip>/cblr/pub/iso/ubuntu-.iso autoinstall’
      • 将profile的autoinstall指向你的cloud-init user-data:
        cobbler profile edit --name= --autoinstall /var/lib/cobbler/autoinstall_templates/cloud-init_user-data
    • 如需为新版本(如Ubuntu 24.04 Noble)提供支持,可在/var/lib/cobbler/distro_signatures.json中加入noble签名定义,随后cobbler sync生效。

三、一键批量更新与回滚设计

  • 批量重装即更新:

    • 按业务分组维护多个Profile(如:Ubuntu22.04-Base、Ubuntu22.04-Updated),每个Profile绑定不同的preseed/cloud-init与镜像源。
    • 需要更新时,将目标主机切换到“Updated”Profile:
      cobbler system edit --name= --profile=<profile_updated>
      cobbler sync
    • 主机从PXE启动后将自动重装,并在安装阶段完成更新,装完即最新。
  • 回滚与灰度:

    • 保留上一个稳定版本的镜像与Profile,出现问题时切回旧Profile重装;
    • 通过System对象逐台或按批次切换,实现灰度与快速回滚。

四、网络引导与服务配置要点

  • DHCP/TFTP/HTTP一体化:

    • 在DHCP模板中确保有:allow booting; allow bootp; filename “/pxelinux.0”; next-server <cobbler_ip>;修改后执行cobbler sync。
    • 启用TFTP(/etc/xinetd.d/tftp 中 disable=no),并开放防火墙端口(如69/80/25150/25151)。
    • 若已有外部DHCP,可只在外部DHCP添加next-server与filename,避免被cobbler模板覆盖。
  • 内网更新源与导入:

    • 使用debmirror与cobbler reposync维护本地APT镜像,供安装与后续更新使用;
    • 导入ISO后通过cobbler import生成可引导的Distro/Profile,作为“重装即更新”的基线。

0