4. XClarity Controller初始化与批量网络配置

当一批ThinkSystem服务器上架后,XClarity Controller(以下简称XCC)的初始化往往是最先被卡住的环节。单台机器通过浏览器登录XCC Web界面逐项填写IP、用户、SNMP团体名和告警接收地址,在10台以内尚可接受,一旦规模上升到几十台甚至上百台,手工操作不仅耗时,还极易出现IP冲突、密码规则不一致、SNMP版本混用等问题。本节围绕“批量”这一核心诉求,说明如何用OneCLI和Redfish两条路径完成XCC的网络与告警初始化,并给出可直接参考的命令与参数示例。

一、先明确批量配置的两种通道

Lenovo为XCC提供了两类可编程接口。第一类是OneCLI,它是运行在操作系统内的命令行工具,通过带内KCS接口或带外网络与XCC通信,适合在已装好操作系统的机器上做本地批量脚本。第二类是Redfish,它是基于HTTPS的RESTful API,XCC自2.0版本起提供较完整的Redfish支持,适合从一台管理跳板机对全网BMC发起带外批量请求。两者并非互斥:常见做法是用Redfish做首次带外初始化(此时操作系统尚未安装),后续在系统内用OneCLI做补充配置或校验。

需要先建立的一个认知是:XCC的配置项分为“立即生效”和“需重启BMC生效”两类。网络地址、用户、SNMP、告警接收器等大多属于立即生效或仅需重启管理控制器即可,不影响主机业务;而某些涉及固件或启动顺序的项才需要重启服务器。批量操作时应优先选择不影响业务的配置项,把需要重启的项单独排期。

XCC批量初始化:OneCLI(带内)与Redfish(带外)双通道 管理跳板机 Redfish脚本 / curl 批量循环 + 结果汇总 目标服务器组 SR650 V3 / SR630 V3 每台含1个XCC 带外:HTTPS 443 → /redfish/v1/ 带内:OneCLI(KCS/OS内) 批量配置的四类核心对象 ① BMC网络 IP/掩码/网关 DHCP或静态 ② 用户与权限 账号/密码/角色 Administrator等 ③ SNMP v1/v2c团体名 v3用户/认证 ④ 告警接收 SNMP Trap目标 邮件/订阅 批量执行后的结果判读 HTTP 200 / 204 配置已接受,读回校验一致 HTTP 400 / 409 参数非法或IP冲突,需修正 超时 / 无响应 检查BMC是否已配IP、链路是否通

二、用Redfish做带外批量初始化

Redfish的批量操作本质是“对每台BMC的同一资源路径发同一份JSON”。以设置静态IP为例,XCC的以太网接口资源位于/redfish/v1/Managers/1/EthernetInterfaces/1,用PATCH方法提交IPv4StaticAddresses即可。下面是一段可直接改造的bash循环示例,假设服务器BMC初始地址为出厂默认192.168.70.100,目标地址按机架位置规划为10.20.30.101起递增:

#!/bin/bash
# 示例:批量设置XCC静态IP(Redfish,带外)
USER="USERID"; PASS="PASSW0RD"   # 出厂默认账号,首次配置后应立即修改
START=101
for i in $(seq 1 20); do
  IP="10.20.30.$((START + i - 1))"
  curl -k -u "$USER:$PASS" -X PATCH \
    "https://192.168.70.100/redfish/v1/Managers/1/EthernetInterfaces/1" \
    -H "Content-Type: application/json" \
    -d "{\"IPv4StaticAddresses\":[{\"Address\":\"$IP\",
         \"SubnetMask\":\"255.255.255.0\",
         \"Gateway\":\"10.20.30.1\"}]}"
  echo "已提交 $IP"
done

这里有几个容易踩坑的点。第一,出厂默认BMC地址通常是192.168.70.100,多台机器同时上电会冲突,因此批量脚本必须逐台执行,或先通过DHCP让每台获得唯一地址再改静态。第二,PATCH提交后XCC会立即切换地址,脚本中后续对该IP的请求需要等待约10~20秒。第三,密码字段在Redfish中通过Accounts资源修改,而不是在EthernetInterfaces里。

三、用户、SNMP与告警的批量设置

用户管理对应/redfish/v1/AccountService/Accounts。批量创建运维账号时,建议统一角色为Administrator或按最小权限给Operator,并强制密码复杂度。示例:

curl -k -u "$USER:$PASS" -X POST \
  "https://10.20.30.101/redfish/v1/AccountService/Accounts" \
  -H "Content-Type: application/json" \
  -d '{"UserName":"opsadmin","Password":"Th1nk@2024",
       "RoleId":"Administrator","Enabled":true}'

SNMP配置在XCC中通过/redfish/v1/Managers/1/Oem/Lenovo/Snmp或标准SnmpService资源暴露。批量场景下通常需要设置:SNMP v1/v2c的只读团体名(如public_ro)、v3的用户与认证协议(SHA/AES)、以及Trap目标地址。告警接收器则通过EventService/Subscriptions或SNMP Trap Destinations配置,把Trap指向监控平台(如Zabbix、SolarWinds)的10.20.30.200:162。

建议把“IP、用户、SNMP、告警”四类配置写成四个独立的JSON模板文件,脚本只替换IP和主机名变量。这样既便于版本管理,也方便在部分机器上只重跑某一类配置。

四、用OneCLI在系统内做补充与校验

当操作系统安装完成后,可在系统内使用OneCLI做本地配置或读回校验。OneCLI的典型用法是onecli命令加--imm参数指定BMC地址,或直接使用带内接口。例如读取当前BMC网络配置:

onecli config show IMM.HostIPAddress --imm 10.20.30.101
onecli config set IMM.HostIPAddress 10.20.30.101 --imm 10.20.30.101

OneCLI的优势在于它把XCC的配置项抽象成IMM.*形式的键值,脚本可读性好,适合做“配置漂移检查”:把期望值与onecli config show的输出逐项比对,不一致的机器再单独修正。这在几十台机器的日常运维中比每次全量重刷更高效。

五、批量执行后的验证闭环

批量配置最容易出问题的地方不是“发不出去”,而是“发出去了但没生效”。因此每轮批量操作后应做三件事:一是用Redfish GET读回EthernetInterfaces和Accounts,确认字段与预期一致;二是从监控平台侧确认是否收到测试Trap(可在XCC中触发一次测试告警);三是记录每台机器的返回码,把非200/204的机器单独列出重试。下面这张检查表可作为批量任务的收尾依据:

检查项验证方式通过标准
BMC IP可达ping / curl -k https://IP/redfish/v1返回200且ServiceRoot正常
静态地址正确GET EthernetInterfaces/1Address与规划表一致
运维账号可登录用新账号GET /redfish/v1认证成功,角色正确
SNMP团体名生效snmpwalk -v2c -c 团体名 IP 1.3.6.1.4.1.19046能返回XCC的OID数据
告警可达触发测试Trap,监控平台查收平台收到对应主机Trap
首次批量配置完成后,务必立即修改出厂默认账号USERID的密码或将其禁用。XCC的默认凭据是公开信息,未修改的BMC等同于把管理口暴露在风险中。

把上述流程固化成脚本后,一台新服务器的XCC初始化可以从原来的十几分钟压缩到一分钟以内,且配置一致性由脚本保证,不再依赖个人记忆。下一阶段可以在此基础上引入XClarity Administrator做集中纳管,把“批量配置”升级为“策略下发与合规检查”。