CentOS 下使用 Cobbler 实现定制化安装
一 核心思路与对象
- 通过组合三类对象实现分层定制:distros(发行版镜像)、profiles(应答文件与内核参数)、systems(按主机粒度定制,如 MAC/IP/主机名)。常用命令包括:cobbler import(导入镜像)、cobbler profile list/report/edit(管理应答文件与内核参数)、cobbler system add(按主机定制)、cobbler sync(使配置生效)。Kickstart 文件默认存放于:/var/lib/cobbler/kickstarts/。PXE 菜单模板:/etc/cobbler/pxe/pxedefault.template。
二 快速上手步骤
- 导入发行版镜像
挂载 ISO 后导入,生成对应的 distro 与默认 profile:
mount /dev/cdrom /mnt
cobbler import --path=/mnt --name=CentOS-7.9-x86_64 --arch=x86_64
- 准备 Kickstart 应答文件
复制或编辑默认模板,示例要点:
- 安装源使用内置变量:url --url=$tree
- 文本安装:text;语言与键盘:lang en_US.UTF-8、keyboard us
- 分区示例:/boot xfs 1G、swap 1G、/ 剩余空间(可按需改为 LVM/RAID)
- 包组与常用工具:如 @development、vim、wget、git、net-tools 等
- 安装后脚本:%post 中可禁用不需要的服务、注册资产、配置仓库等
- 绑定应答文件到 Profile
cobbler profile edit --name=CentOS-7.9-x86_64 --kickstart=/var/lib/cobbler/kickstarts/centos7-custom.ks
- 定制内核参数(可选)
例如使用传统网卡名:cobbler profile edit --name=CentOS-7.9-x86_64 --kopts=‘net.ifnames=0 biosdevname=0’
- 按主机定制(可选,优先级高于 Profile)
获取客户端 MAC,为其创建 system:
cobbler system add --name=web-01 --mac=00:50:56:xx:xx:xx --profile=CentOS-7.9-x86_64 \
–ip-address=192.168.1.100 --subnet=255.255.255.0 --gateway=192.168.1.1 \
–interface=eth0 --static=1 --hostname=web-01 --name-servers=“192.168.1.1” \
–kickstart=/var/lib/cobbler/kickstarts/centos7-custom.ks
- 同步并生效
systemctl restart cobblerd
cobbler sync
说明:Cobbler 管理的 DHCP 配置位于 /etc/cobbler/dhcp.template,请勿直接修改 /etc/dhcp/dhcpd.conf,同步时会自动覆盖生成。
三 常用定制场景与做法
- 每台机器不同网络参数(静态 IP/网关/DNS/主机名)
使用 cobbler system add 按 MAC 建立主机条目,指定 –ip-address/–gateway/–subnet/–hostname/–name-servers,实现“开箱即用”的静态网络主机。
- 统一镜像与不同软件组合
维护多个 profile,每个 profile 绑定不同 kickstart(不同包组/分区方案),装机时按菜单或指定 profile 选择即可。
- 引导菜单与默认项
编辑 /etc/cobbler/pxe/pxedefault.template:设置 MENU TITLE、TIMEOUT、ONTIMEOUT $pxe_timeout_profile,将默认从本地磁盘改为指定的 profile(如 ONTIMEOUT CentOS-7.9-x86_64)。
- 网卡命名策略
在 profile 或 system 的 –kopts 中加入 net.ifnames=0 biosdevname=0,保持 eth0 传统命名风格,便于既有脚本兼容。
- 安装后自动化
在 %post 中执行系统初始化:关闭不需要的服务(如 postfix)、配置 yum/chrony、注册 Cobbler/资产、部署配置管理客户端(如 Salt/Ansible)等。
四 示例文件与命令清单
- Kickstart 片段(示例要点)
install
url --url=$tree
text
lang en_US.UTF-8
keyboard us
zerombr
bootloader --location=mbr --driveorder=sda --append=“crashkernel=auto rhgb quiet”
$SNIPPET(‘network_config’)
timezone --utc Asia/Shanghai
authconfig --enableshadow --passalgo=sha512
rootpw --iscrypted $default_password_crypted
clearpart --all --initlabel
part /boot --fstype xfs --size 1024
part swap --size 1024
part / --fstype xfs --size 1 --grow
firstboot --disable
selinux --disabled
firewall --disabled
logging --level=info
reboot
%packages
@development
bash-completion
chrony
dos2unix
lrzsz
sysstat
tree
vim
wget
git
net-tools
%end
%post
systemctl disable postfix.service
可追加:yum 配置、主机名写入、密钥分发、配置管理注册等
%end
- 常用命令清单
- 镜像导入:cobbler import --path=/mnt --name=CentOS-7.9-x86_64 --arch=x86_64
- 查看对象:cobbler distros; cobbler profile list; cobbler system list
- 绑定应答文件:cobbler profile edit --name= --kickstart=/var/lib/cobbler/kickstarts/xxx.ks
- 内核参数:cobbler profile edit --name= --kopts=‘net.ifnames=0 biosdevname=0’
- 主机定制:cobbler system add --name= --mac= --profile= --ip-address= …
- 生效配置:systemctl restart cobblerd && cobbler sync
提示:Kickstart 文件位置 /var/lib/cobbler/kickstarts/;DHCP 模板 /etc/cobbler/dhcp.template。