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.1 | VLAN 100 网关 |
| DHCP 地址池 | 10.10.100.100–10.10.100.200 | XCC 动态获取 |
| 静态管理地址 | 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,并启用自动同步。
三、证书管理
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 的能力。
五、环境验证
部署完成后,按以下顺序验证:先用 ping node01-xcc.lab.local 确认 DNS 解析和连通性;再用 curl -k https://node01-xcc.lab.local/redfish/v1 确认 Redfish 服务可达;最后用 Ansible 的 ping 模块或 redfish_info 模块做一次批量探测。若返回各服务器的型号、序列号和电源状态,说明自动化环境已就绪,可以进入后续的批量配置阶段。