centos cobbler怎样简化操作流程
导读:CentOS 上简化 Cobbler 操作流程的可落地方案 一 核心思路 用模板化配置集中管理变量(如子网、网关、DNS、next-server),避免逐台手工改配置。 采用导入一次、复用多 Profile的方式,减少重复劳动;必要时用继...
CentOS 上简化 Cobbler 操作流程的可落地方案
一 核心思路
- 用模板化配置集中管理变量(如子网、网关、DNS、next-server),避免逐台手工改配置。
- 采用导入一次、复用多 Profile的方式,减少重复劳动;必要时用继承快速派生新配置。
- 借助脚本化与幂等操作(先判断是否存在再创建/修改),一键完成“校验→配置→导入→同步→装机”。
- 统一Kickstart应答文件,把常用软件、分区、后装脚本固化,装机即交付标准环境。
- 使用批量注册与Web 界面配合,少量特殊主机走界面,常规主机走脚本批量落地。
二 一键化脚本骨架
- 适用环境:CentOS 7/8,已配置好 EPEL,具备 root 权限;脚本按你的网段与镜像路径修改变量即可复用。
- 关键动作:设置 server/next_server、按需开启 manage_dhcp、渲染 DHCP 模板、导入 ISO、绑定 Kickstart、同步、可选 CSV 批量注册主机。
#!/usr/bin/env bash
set -Eeuo pipefail
# ===== 用户可配置 =====
COBBLER_IP="192.168.1.10"
SUBNET="192.168.1.0"
NETMASK="255.255.255.0"
RANGE_START="192.168.1.100"
RANGE_END="192.168.1.200"
ROUTER="192.168.1.1"
DNS_SERVERS="8.8.8.8 1.1.1.1"
ISO_PATH="/mnt/centos7.iso" # 已挂载或指向 ISO 目录
NAME="centos7-base"
KICKSTART="/var/lib/cobbler/kickstarts/centos7.ks"
# ======================
log(){
echo "[$(date '+%F %T')] $*";
}
# 0) 安装依赖
log "安装 cobbler 与依赖..."
yum -y install cobbler cobbler-web pykickstart httpd dhcp xinetd || {
log "依赖安装失败";
exit 1;
}
# 1) 启动与开机自启
systemctl enable --now cobblerd httpd xinetd
systemctl enable --now dhcpd 2>
/dev/null || log "未安装/启用 DHCP(若由外部 DHCP 管理可忽略)"
# 2) 关键配置
log "写入 /etc/cobbler/settings"
sed -i "s/^server: .*/server: ${
COBBLER_IP}
/" /etc/cobbler/settings
sed -i "s/^next_server: .*/next_server: ${
COBBLER_IP}
/" /etc/cobbler/settings
# 若由 Cobbler 托管 DHCP,设为 1;否则为 0 并在外部 DHCP 配置 next-server/filename
sed -i "s/^manage_dhcp: .*/manage_dhcp: 1/" /etc/cobbler/settings
# 3) 渲染 DHCP 模板
log "配置 DHCP 模板"
cat >
/etc/cobbler/dhcp.template <
<
EOF
subnet ${
SUBNET}
netmask ${
NETMASK}
{
option routers ${
ROUTER}
;
option domain-name-servers ${
DNS_SERVERS}
;
range dynamic-bootp ${
RANGE_START}
${
RANGE_END}
;
default-lease-time 21600;
max-lease-time 43200;
next-server \$next_server;
filename "/pxelinux.0";
}
EOF
# 4) 获取引导加载器
log "获取 PXE 引导文件"
cobbler get-loaders
# 5) 导入镜像(幂等:已存在则跳过)
if ! cobbler distro list | grep -qw "${
NAME}
";
then
log "挂载并导入 ISO: ${
ISO_PATH}
"
mkdir -p /mnt/iso
mount -o loop "${
ISO_PATH}
" /mnt/iso
cobbler import --path=/mnt/iso --name="${
NAME}
" --arch=x86_64
umount /mnt/iso
else
log "镜像 ${
NAME}
已存在,跳过导入"
fi
# 6) 绑定 Kickstart(幂等:若已设置则跳过)
if cobbler profile list | grep -qw "${
NAME}
-x86_64";
then
if ! cobbler profile report --name="${
NAME}
-x86_64" | grep -q "Kickstart: ${
KICKSTART}
";
then
cobbler profile edit --name="${
NAME}
-x86_64" --kickstart="${
KICKSTART}
"
fi
else
cobbler profile add --name="${
NAME}
-x86_64" --distro="${
NAME}
-x86_64" --kickstart="${
KICKSTART}
"
fi
# 7) 同步到 DHCP/TFTP/HTTP
log "同步配置"
cobbler sync
# 8) 可选:从 CSV 批量注册主机(CSV 列:mac,ip,hostname)
register_from_csv(){
local csv="$1"
while IFS=',' read -r mac ip hostname;
do
[[ -z "${
mac}
" || "${
mac}
" =~ ^# ]] &
&
continue
local name="host-${
ip##*.}
"
if ! cobbler system list | grep -qw "${
name}
";
then
cobbler system add \
--name="${
name}
" \
--profile="${
NAME}
-x86_64" \
--mac="${
mac}
" \
--ip-address="${
ip}
" \
--subnet="${
NETMASK}
" \
--gateway="${
ROUTER}
" \
--hostname="${
hostname}
" \
--name-servers="${
DNS_SERVERS}
"
fi
done <
<
(sed 's/\r//g' "$csv")
}
# 示例:register_from_csv "hosts.csv"
log "完成。客户端请设置从网络启动(PXE)。"
- 使用要点
- 每次修改 Profile/System/DHCP 后务必执行:cobbler sync。
- 若已有外部 DHCP,设置 manage_dhcp=0,并在外部 DHCP 配置:next-server=COBBLER_IP、filename=“/pxelinux.0”。
三 标准化 Kickstart 模板
- 将常用分区、软件包、后装动作固化,减少每台机的差异配置。
# /var/lib/cobbler/kickstarts/centos7.ks
install
url --url=http://$server/cobbler/ks_mirror/$distro/
lang en_US.UTF-8
keyboard us
timezone Asia/Shanghai
auth --enableshadow --passalgo=sha512
rootpw --iscrypted $default_password_crypted
# 网络(可按需细化网卡名)
network --bootproto=dhcp --device=eth0 --onboot=yes --noipv6
# 引导与分区
bootloader --location=mbr
clearpart --all --initlabel
part /boot --fstype=ext4 --size=1024
part / --fstype=xfs --size=10240 --grow
part swap --size=2048
# 软件包
%packages
@base
@core
vim
wget
curl
%end
# 安装后脚本(装机即配置)
%post
# 示例:安装常用工具、注册 CM 客户端、关闭 SELinux/防火墙(按策略调整)
yum install -y epel-release
yum install -y htop tree git
systemctl enable --now chronyd
sed -i 's/^SELINUX=.*/SELINUX=permissive/' /etc/selinux/config
setenforce 0
%end
- 提示
- 使用 $server/$distro 等 Cobbler 变量,避免硬编码;镜像源路径由 Cobbler 自动发布。
- 需要加密 root 时,使用 openssl passwd -1 生成哈希替换 $default_password_crypted。
四 批量与自助化
- 批量注册
- 维护一份 CSV(列:mac,ip,hostname[,gateway]),用脚本循环调用 cobbler system add 批量入库,实现“零接触”装机。
- 自助装机
- 保留 Cobbler 的 PXE 菜单默认项(如本地磁盘启动),新主机上电选择对应 Profile 即可自动安装;无需逐台配置。
- 界面辅助
- 启用 Cobbler Web(可选),用于临时查看、少量主机调整与审计;常规批量仍建议脚本化。
五 快速排错与最小化检查
- 预检与日志
- 执行 cobbler check,按提示修复(如 loader、服务、配置项)。
- 查看 /var/log/cobbler/cobbler.log、journalctl 相关服务日志,定位导入、同步、引导失败原因。
- 网络与服务
- 确认 DHCP/TFTP/HTTP 端口放行;外部 DHCP 需正确设置 next-server 与 filename;每次变更后执行 cobbler sync。
- 引导文件
- 若导入后菜单缺失或引导失败,执行 cobbler get-loaders 补齐 PXE 引导文件。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos cobbler怎样简化操作流程
本文地址: https://pptw.com/jishu/785081.html
