3. 自动化环境准备

在开始对 ThinkSystem 服务器进行批量配置之前,必须先搭建一个稳定、可复现的自动化基础环境。这个环境的核心目标只有一句话:让 Ansible 控制节点能够通过管理网络,可靠地发现、认证并操作每一台目标服务器。围绕这个目标,本节依次处理管理网络规划、DHCP/DNS/NTP 基础服务、证书管理,以及跳板机与 Ansible 控制节点的部署。

一、管理网络规划

ThinkSystem 服务器的带外管理依赖 XCC(Lenovo XClarity Controller)或 BMC 接口。自动化运维的第一条原则是:管理流量与业务流量物理或逻辑隔离。推荐为管理网络单独划分 VLAN,例如 VLAN 100,网段使用 10.10.100.0/24,网关 10.10.100.1。这样做的原因是 XCC 的批量操作(如重启、固件刷新、虚拟介质挂载)会产生大量并发连接,若与业务网络混用,既影响业务,也容易被安全策略阻断。

地址规划建议按机柜和 U 位分配,便于定位。例如:

用途网段/地址说明
管理网关10.10.100.1VLAN 100 网关
DHCP 地址池10.10.100.100–10.10.100.200XCC 动态获取
静态管理地址10.10.100.11–10.10.100.99关键设备固定 IP
Ansible 控制节点10.10.100.10固定 IP,跳板机同机部署
DNS/NTP 服务器10.10.100.5可复用现有基础设施

规划完成后,需要在交换机上配置管理 VLAN、Trunk 口以及 DHCP Relay(若 DHCP 服务器不在同一网段)。这一步决定了后续 XCC 能否自动获得地址,是自动化能否“零接触”起步的关键。

二、DHCP、DNS 与 NTP 配置

XCC 出厂默认可能为 DHCP 模式。为了让新上架服务器自动获得管理地址,需要在管理网段部署 DHCP 服务。以 Linux 上的 ISC DHCP 为例,关键配置片段如下:

subnet 10.10.100.0 netmask 255.255.255.0 {
  range 10.10.100.100 10.10.100.200;
  option routers 10.10.100.1;
  option domain-name-servers 10.10.100.5;
  option domain-name "lab.local";
  default-lease-time 86400;
  max-lease-time 604800;
}

如果希望某台服务器始终获得固定地址,可基于 XCC 的 MAC 地址做保留:

host node01-xcc {
  hardware ethernet 6C:AE:8B:11:22:33;
  fixed-address 10.10.100.21;
}

DNS 方面,建议为每台服务器的 XCC 建立正向解析记录,例如 node01-xcc.lab.local → 10.10.100.21,并配置反向解析。这样 Ansible 的 inventory 可以直接使用主机名,日志和告警也更容易读。NTP 则用于保证 XCC 日志、证书有效期校验和 Ansible 任务时间戳一致。在 XCC 中可将 NTP 服务器指向 10.10.100.5,并启用自动同步。

建议在 DHCP 中同时下发 NTP 选项(option 42),使 XCC 在获取地址时自动获得时间源,减少逐台手工配置。

三、证书管理

XCC 的 Web 界面和 Redfish API 默认使用自签名证书,浏览器和 Ansible 的 uri 模块会因证书不受信任而报错。生产环境应使用内部 CA 签发证书。基本流程是:为每台 XCC 生成私钥和 CSR,提交给 CA 签发,再将证书和私钥导入 XCC。若使用通配符证书 *.xcc.lab.local,可大幅减少证书数量,但需注意私钥分发安全。

在 Ansible 侧,若暂时使用自签名证书,可在任务中设置 validate_certs: no,但这只应作为实验环境的临时手段。更稳妥的做法是将内部 CA 根证书加入控制节点的信任库:

cp lab-ca.crt /usr/local/share/ca-certificates/
update-ca-certificates

证书管理还包括有效期监控。建议在 Ansible 中增加一个巡检任务,定期检查各 XCC 证书剩余天数,低于 30 天时告警,避免批量操作因证书过期而中断。

四、跳板机与 Ansible 控制节点部署

出于安全考虑,Ansible 控制节点通常部署在跳板机或专用管理服务器上,不直接暴露到业务网络。推荐配置:2 vCPU、4 GB 内存、50 GB 磁盘,操作系统使用 Rocky Linux 9 或 Ubuntu 22.04。安装步骤如下:

dnf install -y ansible python3-pip git
ansible --version
pip3 install pysnow lxml

随后配置 SSH 免密登录到跳板机可访问的目标,并创建 Ansible 工作目录:

mkdir -p /opt/ansible/{inventory,playbooks,roles,group_vars}
cd /opt/ansible
ansible-galaxy collection install community.general
ansible-galaxy collection install ansible.utils

针对 ThinkSystem,还需要安装与 Redfish/XCC 交互的集合,例如 community.general 中的 redfish_* 模块,或 Lenovo 提供的 lenovo.lxca 集合。inventory 可按机柜分组:

[xcc]
node01-xcc.lab.local
node02-xcc.lab.local

[xcc:vars]
ansible_connection=local
xcc_user=USERID
xcc_password={{ vault_xcc_password }}

密码应通过 Ansible Vault 加密保存,而不是明文写入 inventory。至此,控制节点已具备批量操作 XCC 的能力。

ThinkSystem 自动化管理环境拓扑 管理网络 VLAN 100 · 10.10.100.0/24 跳板机 / Ansible 控制节点 10.10.100.10 ansible-core + collections Ansible Vault 加密凭据 SSH / Redfish 出口 基础服务 DHCP · 10.10.100.5 DNS · lab.local NTP · 时间同步 内部 CA · 证书签发 管理交换机 VLAN 100 · Trunk DHCP Relay 网关 10.10.100.1 node01 XCC 10.10.100.21 Redfish / HTTPS node02 XCC 10.10.100.22 Redfish / HTTPS node03 XCC 10.10.100.23 Redfish / HTTPS node04 XCC 10.10.100.24 Redfish / HTTPS 控制节点通过管理网络访问各 XCC;DHCP 下发地址,DNS 解析主机名,NTP 统一时间,CA 签发证书

五、环境验证

部署完成后,按以下顺序验证:先用 ping node01-xcc.lab.local 确认 DNS 解析和连通性;再用 curl -k https://node01-xcc.lab.local/redfish/v1 确认 Redfish 服务可达;最后用 Ansible 的 ping 模块或 redfish_info 模块做一次批量探测。若返回各服务器的型号、序列号和电源状态,说明自动化环境已就绪,可以进入后续的批量配置阶段。

若 Redfish 返回 401,通常是凭据或账户权限问题;若返回证书错误,检查 CA 根证书是否已加入控制节点信任库,或确认 XCC 证书是否已正确导入。