3. 自动化运维环境搭建

批量运维 Xeon 服务器的第一步,不是急着写 Ansible Playbook,而是把“带外管理网”和“业务数据网”彻底分开,并让新机器在无人值守的情况下自动完成操作系统安装。本节围绕管理网络规划、PXE/HTTP/TFTP 服务部署、DHCP 与 DNS 配置、控制节点选型与初始化四条主线展开,最终形成一套可复用的自动化装机底座。

一、管理网络规划:先定地址,再谈自动化

Xeon 服务器通常具备 BMC(如 iDRAC、iLO、IPMI)带外管理口和至少两个业务网口。自动化运维要求管理流量与业务流量物理或逻辑隔离,避免 PXE 广播、DHCP 分配和 BMC 心跳干扰生产网络。建议规划三个网段:

  • 带外管理网:例如 10.10.0.0/24,网关 10.10.0.1,用于 BMC 的 IPMI/Redfish 访问、KVM 重定向和电源控制。
  • PXE 装机网:例如 10.20.0.0/24,网关 10.20.0.1,DHCP、TFTP、HTTP 服务均部署在此网段,新机通过该网段获取引导文件。
  • 业务数据网:例如 192.168.100.0/24,承载实际业务流量,装机完成后由配置管理工具接管。

地址分配上,BMC 建议采用静态地址或 DHCP 保留,PXE 网段使用 DHCP 动态池,业务网段由 CMDB 统一登记。规划时需明确:每台 Xeon 的 BMC MAC、PXE 网卡 MAC、业务网卡 MAC 三组信息,这是后续 DHCP 保留和自动化识别的基础。

二、PXE/HTTP/TFTP 服务部署

PXE 启动依赖三个服务协同:DHCP 提供 IP 和引导文件名,TFTP 传输引导程序(如 pxelinux.0、grubx64.efi),HTTP 提供内核、initrd 和安装源。以 CentOS/Rocky Linux 控制节点为例,部署过程如下:

# 安装基础服务
dnf install -y dhcp-server tftp-server httpd syslinux-tftpboot

# 准备 TFTP 根目录
mkdir -p /var/lib/tftpboot/pxelinux.cfg
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
cp /usr/share/syslinux/ldlinux.c32 /var/lib/tftpboot/

# 挂载 ISO 并复制安装源到 HTTP 目录
mount -o loop /data/Rocky-9.iso /mnt
mkdir -p /var/www/html/rocky9
cp -a /mnt/. /var/www/html/rocky9/
cp /var/www/html/rocky9/images/pxeboot/vmlinuz /var/lib/tftpboot/
cp /var/www/html/rocky9/images/pxeboot/initrd.img /var/lib/tftpboot/

随后编写 PXE 引导菜单 /var/lib/tftpboot/pxelinux.cfg/default,指定内核、initrd 和 kickstart 文件路径。kickstart 文件放在 HTTP 目录下,例如 http://10.20.0.10/ks/xeon-base.ks,其中定义分区、时区、root 密码、网卡绑定和初始用户。这样新机加电后即可自动完成系统安装,无需人工插盘。

Xeon 自动化装机网络与服务链路 带外管理网 10.10.0.0/24 BMC / IPMI / Redfish KVM 重定向 / 电源控制 PXE 装机网 10.20.0.0/24 DHCP 动态池 + 保留 TFTP / HTTP 引导源 业务数据网 192.168.100.0/24 业务流量 / 集群通信 CMDB 登记 / 配置管理 自动化控制节点 DHCP · TFTP · HTTP · DNS · Ansible 10.20.0.10 / 24 待装 Xeon 服务器 PXE 网卡 MAC 已登记 隔离 隔离 服务端口 DHCP:UDP 67/68 TFTP:UDP 69 HTTP:TCP 80 DNS:UDP/TCP 53 SSH:TCP 22 Ansible:TCP 22 关键文件 /etc/dhcp/dhcpd.conf /var/lib/tftpboot/ /var/www/html/ks/ /etc/named.conf /etc/ansible/hosts /etc/hosts

三、DHCP 与 DNS 配置要点

DHCP 是 PXE 的入口,配置时必须区分“引导请求”和“普通地址请求”。在 /etc/dhcp/dhcpd.conf 中,针对 PXE 网段设置 next-server 指向 TFTP 服务器地址,filename 指向引导文件。对于 UEFI 启动的 Xeon,需使用 grubx64.efi;对于 Legacy BIOS,则使用 pxelinux.0。可通过 class 匹配 option arch 实现双模式共存:

subnet 10.20.0.0 netmask 255.255.255.0 {
  range 10.20.0.100 10.20.0.200;
  option routers 10.20.0.1;
  option domain-name-servers 10.20.0.10;
  next-server 10.20.0.10;
  filename "pxelinux.0";
}

class "pxeclients" {
  match if substring(option vendor-class-identifier,0,9) = "PXEClient";
  if option arch = 00:07 {
    filename "grubx64.efi";
  } else {
    filename "pxelinux.0";
  }
}

DNS 方面,控制节点可部署 BIND 或 dnsmasq,为管理网和 PXE 网提供正向与反向解析。建议为每台 Xeon 建立 bmc-01、node-01 等 A 记录,并配置 PTR 反向记录,便于 Ansible 通过主机名批量操作。若规模较小,也可用 /etc/hosts 配合 dnsmasq 的 addn-hosts 实现轻量解析。

四、控制节点选型与初始化

控制节点是整套自动化体系的“大脑”,选型时关注三点:一是网络吞吐,建议双万兆网卡绑定,分别接入 PXE 网和业务网;二是存储可靠性,系统盘做 RAID1,安装源和日志盘单独挂载;三是资源余量,CPU 不低于 8 核、内存不低于 32 GB,以支撑并发装机与 Ansible 任务。操作系统建议与目标 Xeon 节点保持一致,减少工具链差异。

初始化控制节点时,按以下顺序落地:关闭 SELinux 或设为 permissive、配置 chrony 时间同步、设置静态 IP 与主机名、安装并启动 dhcp-server/tftp-server/httpd/named、放行防火墙端口、创建 ansible 运维用户并配置 SSH 免密。完成后用一台待装 Xeon 做验证:加电后观察是否获取到 10.20.0.x 地址、是否加载 grubx64.efi、是否自动进入 kickstart 安装流程。若卡在 TFTP 阶段,优先检查 /var/log/messages 中 tftp 的拒绝记录和防火墙 UDP 69 是否放行。

管理网、PXE 网、业务网三网隔离是批量运维的底线。DHCP 只服务 PXE 网段,避免误分配业务地址;BMC 地址建议静态规划,便于带外批量重启和固件升级。
PXE 引导文件必须与固件模式匹配:UEFI 用 grubx64.efi,Legacy 用 pxelinux.0。若混用,新机将停在 “No bootable device” 或反复重试 DHCP,排查时先确认 BIOS 启动模式与 DHCP class 匹配结果。