首页主机资讯centos cobbler怎样简化操作流程

centos cobbler怎样简化操作流程

时间2026-01-19 02:11:04发布访客分类主机资讯浏览591
导读: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_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 引导文件。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: centos cobbler怎样简化操作流程
本文地址: https://pptw.com/jishu/785081.html
如何优化centos cpuinfo设置 centos cmatrix网络应用

游客 回复需填写必要信息