温馨提示×

centos cobbler怎样简化操作流程

小樊
34
2025-12-31 06:19:40
栏目: 智能运维

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_IPfilename=“/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-serverfilename;每次变更后执行 cobbler sync
  • 引导文件
    • 若导入后菜单缺失或引导失败,执行 cobbler get-loaders 补齐 PXE 引导文件。

0