首页主机资讯如何在Debian Cobbler中使用脚本自动化任务

如何在Debian Cobbler中使用脚本自动化任务

时间2025-11-14 18:15:04发布访客分类主机资讯浏览1208
导读:在 Debian 上使用脚本自动化 Cobbler 任务 一 总体思路与前置条件 在 Debian 服务器上安装并启用 Cobbler 及其依赖(如 cobbler cobbler-web dhcp tftp-server pykicks...

在 Debian 上使用脚本自动化 Cobbler 任务

一 总体思路与前置条件

  • Debian 服务器上安装并启用 Cobbler 及其依赖(如 cobbler cobbler-web dhcp tftp-server pykickstart httpd),将 servernext_server 指向本机 IP,按需开启 manage_dhcp 并用 cobbler sync 使配置生效。导入 Debian ISONetboot 镜像,创建 Profile/System,在 Profile 上绑定 Preseed(Debian 的无人值守应答文件),客户端以 PXE 启动即可无人值守安装。关键检查与日志:cobbler check/var/log/cobbler/cobbler.log

二 自动化脚本骨架与用法

  • 目标:用脚本完成“环境校验 → 配置 → 导入镜像 → 创建 Profile/System → 同步 → 触发安装”的闭环,并支持 CSV 批量导入主机。
  • 示例脚本(可直接改造使用,按需替换变量):
#!/usr/bin/env bash
set -Eeuo pipefail

# ===== 用户可配置 =====
COBBLER_IP="192.168.1.100"
DHCP_SUBNET="192.168.1.0"
DHCP_RANGE="192.168.1.100 192.168.1.200"
ROUTER="192.168.1.1"
DNS_SERVERS="8.8.8.8 1.1.1.1"
DEBIAN_ISO="/path/to/debian.iso"
PROFILE_NAME="debian-12-amd64"
SEED_FILE="/var/lib/cobbler/templates/debian.seed"
# ======================

log(){
     echo "[$(date '+%F %T')] $*";
 }


# 1) 环境校验
log "检查 cobbler 与必要服务..."
systemctl is-active --quiet cobblerd || {
     log "启动 cobblerd";
     systemctl start cobblerd;
 }

systemctl is-active --quiet tftpd-hpa || {
     log "启动 tftpd-hpa";
     systemctl start tftpd-hpa;
 }

systemctl is-active --quiet apache2   || {
     log "启动 apache2";
       systemctl start apache2;
   }
    
if command -v dhcpd >
    /dev/null 2>
    &
    1;
 then
  systemctl is-active --quiet isc-dhcp-server || {
     log "启动 isc-dhcp-server";
     systemctl start isc-dhcp-server;
 }

fi

# 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
# 按需开启:manage_dhcp、manage_tftp(示例开启 DHCP)
sed -i "s/^manage_dhcp: .*/manage_dhcp: 1/" /etc/cobbler/settings
sed -i "s/^manage_tftp: .*/manage_tftp: 1/" /etc/cobbler/settings

# 3) 配置 DHCP 模板
log "配置 DHCP 子网"
cat >
    /etc/cobbler/dhcp.template <
    <
EOF
subnet ${
DHCP_SUBNET}
 netmask 255.255.255.0 {

    option routers ${
ROUTER}
    ;

    option domain-name-servers ${
DNS_SERVERS}
    ;

    range dynamic-bootp ${
DHCP_RANGE}
    ;
    
    default-lease-time 21600;
    
    max-lease-time 43200;
    
    next-server \$next_server;

}

EOF

# 4) 导入镜像(若已导入可跳过)
if ! cobbler distro list | grep -qw "${
PROFILE_NAME}
    ";
 then
  log "挂载并导入 ISO: ${
DEBIAN_ISO}
"
  mkdir -p /mnt/debian
  mount -o loop "${
DEBIAN_ISO}
" /mnt/debian
  cobbler import --path=/mnt/debian --name="${
PROFILE_NAME}
"
  umount /mnt/debian
fi

# 5) 绑定 Preseed
if [[ -f "${
SEED_FILE}
    " ]];
 then
  log "绑定 Preseed: ${
SEED_FILE}
"
  cobbler profile edit --name="${
PROFILE_NAME}
" --autoinstall="${
SEED_FILE}
"
fi

# 6) 同步
log "同步配置到 DHCP/TFTP/HTTP"
cobbler sync

# 7) 可选:从 CSV 批量注册主机(CSV 列:mac,ip,hostname,gateway)
register_from_csv(){
    
  local csv="$1"
  while IFS=',' read -r mac ip hostname gateway;
 do
    [[ -z "${
mac}
" || "${
mac}
    " =~ ^# ]] &
    &
 continue
    local name="host-${
ip##*.}
"
    cobbler system add \
      --name="${
name}
" \
      --profile="${
PROFILE_NAME}
" \
      --mac="${
mac}
" \
      --ip-address="${
ip}
" \
      --subnet="255.255.255.0" \
      --gateway="${
gateway:-${
ROUTER}
}
" \
      --hostname="${
hostname}
" \
      --name-servers="${
DNS_SERVERS}
    "
  done <
     <
(sed 's/\r//g' "$csv")
}
    

# 示例:register_from_csv "hosts.csv"
# 客户端需设置 PXE 启动,上电后将自动安装
log "完成。请为目标主机设置 PXE 启动。"
  • 使用要点
    • 将脚本与 hosts.csv 配合使用即可批量注册主机;CSV 示例:
      • 00:11:22:33:44:55,192.168.1.101,host1.example.com,192.168.1.1
      • 00:11:22:33:44:56,192.168.1.102,host2.example.com,192.168.1.1
    • 每次修改 Profile/System/DHCP 后务必执行 cobbler sync
    • 客户端需在同一二层网段、以 PXE 启动,且防火墙放行 DHCP/TFTP/HTTP

三 在 Preseed 中执行安装后脚本

  • Debian Preseed(debian.seed) 中使用 preseed/late_command 执行安装完成后的任意脚本(本地或远程):
# 示例:安装后执行本地脚本(位于安装介质的 preseed/late_command 可访问路径)
d-i preseed/late_command string \
  in-target sh -c ' \
    apt-get update &
    &
     apt-get install -y curl vim htop;
     \
    echo "部署完成: $(date)" >
     /root/deploy-done.txt;
     \
  '

# 示例:从内网 Git 拉取并运行配置脚本
# d-i preseed/late_command string \
#   in-target sh -c ' \
#     apt-get update &
    &
     apt-get install -y git;
     \
#     git clone https://git.example.com/deploy.git /root/deploy &
    &
     \
#     bash /root/deploy/bootstrap.sh;
 \
#   '
  • 说明
    • 将需要自动化的动作(软件安装、用户创建、配置管理、CM 客户端安装等)放入 late_command,即可实现“装机即配置”。
    • 若脚本较大或需复用,建议放到内网 HTTP/HTTPS 服务器,用 wget/curl 拉取执行。

四 批量编排与 API 方式

  • 命令行批量化:结合 CSV 与脚本循环调用 cobbler system add 可快速为成百上千台主机生成 System 条目,实现“零接触”装机。
  • API 自动化:Cobbler 提供可编程接口,适合与 Ansible/自研平台 集成。示例(Python,需安装 cobbler-api):
import cobbler_api
api = cobbler_api.CobblerAPI("http://${
COBBLER_IP}
/cobbler_api", "cobbler", "cobbler")
api.add_system({

    "name": "host-192-168-1-101",
    "profile": "debian-12-amd64",
    "mac_address": "00:11:22:33:44:55",
    "ip_address": "192.168.1.101",
    "hostname": "host1.example.com",
    "gateway": "192.168.1.1",
    "name_servers": ["8.8.8.8", "1.1.1.1"],
    "netboot_enabled": True
}
    )
# 变更后同步
api.sync()
  • 适用场景
    • CMDB/资产系统联动,按业务线自动生成 System、选择 Profile/Seed,实现全自动交付流水线。

五 排错与最佳实践

  • 常用检查
    • 执行 cobbler check,按提示修复(如 loader、服务、配置项)。
    • 查看 /var/log/cobbler/cobbler.logjournalctl -u cobblerd/tftpd-hpa/apache2,定位导入、同步、引导失败原因。
    • 确保 DHCP/TFTP/HTTP 端口未被防火墙拦截,且 next-serverserver 配置正确。
  • 网络与多 DHCP 冲突
    • 同一二层网段避免存在多个 DHCP 服务;若使用外部 DHCP,请将 manage_dhcp=0 并在外部 DHCP 配置 next-server 指向 Cobbler 服务器。
  • 镜像与引导
    • 若导入的 ISO 缺少 PXE 引导文件(如 initrd.gz),可使用 Debian Netboot 镜像或补齐引导文件后再导入。
  • 幂等与可重复执行
    • 脚本中先判断对象是否存在(如 distro/profile 是否已导入),再执行创建/绑定,保证可重复运行。

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


若转载请注明出处: 如何在Debian Cobbler中使用脚本自动化任务
本文地址: https://pptw.com/jishu/748256.html
如何解决Debian Cobbler的常见问题 Linux Compton配置中安全设置与注意事项

游客 回复需填写必要信息