基于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
Profile 是 distro + 自动安装模板 + 内核参数 + repo 的组合模板。
它决定“这类主机怎么装”。
例如:
rocky9-minimalrocky9-k8s-nodeubuntu2204-baseubuntu2204-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 |