基于cobbler搭建自动化系统安装平台

1.总体说明

基于 Cobbler / Cobbler-Web 搭建自动化安装系统,核心目标不是“装上一个 PXE 服务器”这么简单,而是构建一套可批量装机、可模板化、可审计、可扩展的裸机自动化交付平台。

搭建思路

  • 后端控制面:Cobbler CLI / XML-RPC API
  • 前端管理面:Cobbler-Web(可选)
  • 交付面:PXE / DHCP / TFTP / HTTP
  • 模板面:Kickstart / Preseed / AutoYaST
  • 资产面:System/Profile/Repo/镜像/主机清单
  • 集成面:CMDB / DNS / IPAM / Ansible / Salt / 监控告警

2.系统定位与适用场景

2.1 适合的场景

Cobbler 非常适合以下场景:

  • 机房或实验室批量装机
  • KVM/VMware 测试环境批量初始化
  • Linux 裸机统一交付
  • 需要通过 MAC、主机名、Profile 实现差异化安装
  • OS 安装完成后接入 Ansible/Salt/Puppet 做 Day-2 配置

3.推荐架构设计

3.1 逻辑架构图

flowchart TB
    U[运维管理员] --> W[Cobbler-Web]
    U --> CCLI[Cobbler CLI/API]

    W --> C[Cobbler Server]
    CCLI --> C

    C --> D[DHCP服务]
    C --> T[TFTP服务]
    C --> H[HTTP/镜像仓库]
    C --> R[Repo/YUM-APT Mirror]
    C --> K[Kickstart/Preseed模板]
    C --> DB[Distros/Profiles/Systems]

    N[待装机物理机/虚拟机] -->|PXE DHCP Discover| D
    N -->|下载引导文件| T
    N -->|获取内核/initrd/安装源| H
    N -->|加载自动安装模板| K

    C --> CMDB[CMDB/IPAM/DNS]
    C --> A[Ansible/Salt/Puppet]
    A --> N

3.2 推荐的分层设计

层次 组件 作用
接入层 Cobbler-Web / CLI / API 运维入口
控制层 cobblerd 生成 PXE 配置、管理 profile/system/repo
传输层 DHCP / TFTP / HTTP 引导与安装资源分发
模板层 Kickstart / Preseed 自动安装应答
数据层 distro / profile / system / repo 安装对象建模
集成层 DNS / IPAM / CMDB / Ansible 生命周期闭环

4.核心对象模型设计

Cobbler 真正好用的关键,不在“命令能跑”,而在于你对对象模型是否规划合理。

4.1 Distro

Distro 表示安装发行版的基础定义,通常包含:

  • 内核
  • initrd
  • 架构
  • OS 版本签名

例如:

  • RockyLinux-9.4-x86_64
  • Ubuntu-22.04-x86_64

4.2 Profile

Profiledistro + 自动安装模板 + 内核参数 + repo 的组合模板。
它决定“这类主机怎么装”。

例如:

  • rocky9-minimal
  • rocky9-k8s-node
  • ubuntu2204-base
  • ubuntu2204-docker

4.3 System

System 是针对具体机器的实例化对象,通常绑定:

  • MAC 地址
  • IP 地址
  • Hostname
  • 网卡配置
  • 目标 Profile
  • 电源管理参数(可选)

这是实现按机器精准装机的关键。官方 quickstart 也强调,system object 的主要用途之一就是网络配置;相比 profile,system 可以表达更细粒度的主机属性。

4.4 Repo

Repo 用于管理镜像源或软件仓库:

  • BaseOS
  • AppStream
  • EPEL
  • 内部业务 RPM 仓库

这能把“装系统”和“装基础软件”联动起来。


5.网络与服务规划

5.1 最小可用网络平面

自动化安装依赖这几个基础网络面:

  • DHCP:给待装机节点分配地址并下发 boot file
  • TFTP:提供 PXE 启动文件
  • HTTP/HTTPS:提供内核、initrd、ISO 解包内容、自动安装脚本
  • DNS:建议纳入统一解析
  • NTP:保证装机过程时间一致

5.2 生产建议

生产中不建议所有服务都混在一起毫无边界,建议:

  • DHCP 可以独立部署,Cobbler 仅生成配置或接管局部网段
  • HTTP 与 Repo 存储独立大盘
  • TFTP 放在内网专用网络
  • Cobbler 控制面走管理网
  • 待装机流量与办公流量隔离 VLAN

5.3 典型网段划分

网络 用途 示例
管理网 运维访问 Cobbler/Web/API 10.10.0.0/24
装机网 PXE/DHCP/TFTP/HTTP 10.20.0.0/24
业务网 装机后业务通信 10.30.0.0/24
存储网 镜像/仓库/日志 10.40.0.0/24