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、告警接收器等大多属于立即生效或仅需重启管理控制器即可,不影响主机业务;而某些涉及固件或启动顺序的项才需要重启服务器。批量操作时应优先选择不影响业务的配置项,把需要重启的项单独排期。
二、用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。
四、用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/1 | Address与规划表一致 |
| 运维账号可登录 | 用新账号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做集中纳管,把“批量配置”升级为“策略下发与合规检查”。