)
告别Web界面用Postman玩转服务器BMC的12个Redfish实战操作含Session管理避坑在数据中心运维和服务器管理中Redfish作为新一代硬件管理接口标准正逐步取代传统的IPMI协议。然而许多工程师仍习惯于通过Web界面进行点对点操作这种方式在批量管理、自动化测试和持续集成场景中显得力不从心。本文将带你解锁Postman这一API开发利器构建完整的Redfish自动化工作流。1. 为什么选择Postman进行Redfish接口测试传统Web界面操作存在三个明显短板无法批量执行、难以集成到自动化流程、缺乏可复用的测试案例。而Postman恰好能解决这些问题环境变量管理全局/集合/环境三级变量体系轻松切换不同服务器配置测试脚本集成支持JavaScript编写预处理和断言脚本实现自动化校验集合运行器批量执行接口调用序列生成可视化报告团队协作通过共享集合实现知识沉淀降低新人学习成本以电源控制为例当需要同时对50台服务器执行关机→配置更新→开机的操作序列时Web界面需要人工逐台操作至少150次而Postman集合运行只需一次触发。2. 环境准备与认证机制深度解析2.1 基础环境配置首先需要关闭SSL证书验证仅测试环境适用File → Settings → General → SSL certificate verification → OFF建议创建以下环境变量变量名示例值作用域deviceip192.168.1.100环境变量bmc_useradmin全局变量bmc_passwordYourComplexPwd123全局变量2.2 Session管理的最佳实践Redfish的Session认证涉及两个关键头部X-Auth-Token身份验证令牌ETag资源版本控制标识登录接口示例POST https://{{deviceip}}/redfish/v1/SessionService/Sessions Headers: { Content-Type: application/json } Body: { UserName: {{bmc_user}}, Password: {{bmc_password}} }在Tests脚本中处理Tokenconst token pm.response.headers.get(X-Auth-Token); pm.globals.set(X-Auth-Token, token); // 验证响应状态 pm.test(Status code is 201, () { pm.response.to.have.status(201); });注意生产环境应定期轮换Token建议设置定时器每30分钟重新获取3. 服务器资产管理全流程自动化3.1 资产信息采集通过GET请求获取系统详情GET https://{{deviceip}}/redfish/v1/Systems/1 Headers: { X-Auth-Token: {{X-Auth-Token}} }典型响应字段解析{ Manufacturer: Dell, Model: PowerEdge R740, SerialNumber: ABC123456, ProcessorSummary: { Count: 2, Model: Intel Xeon Gold 6248R }, MemorySummary: { TotalSystemMemoryGB: 256 } }建议在Tests脚本中添加数据校验const jsonData pm.response.json(); pm.test(Verify system model, () { pm.expect(jsonData.Model).to.include(PowerEdge); });3.2 电源控制三连击服务器电源管理支持多种操作模式操作类型请求体参数适用场景正常关机{ResetType:GracefulShutdown}允许应用保存数据强制重启{ResetType:ForceRestart}系统无响应时使用开机{ResetType:On}冷启动设备示例请求POST https://{{deviceip}}/redfish/v1/Systems/1/Actions/ComputerSystem.Reset Headers: { X-Auth-Token: {{X-Auth-Token}}, Content-Type: application/json } Body: { ResetType: GracefulShutdown }4. 用户账户全生命周期管理4.1 创建高权限账户账户创建需要指定角色类型POST https://{{deviceip}}/redfish/v1/AccountService/Accounts Headers: { X-Auth-Token: {{X-Auth-Token}}, Content-Type: application/json } Body: { Id: 10, UserName: api_operator, Password: SecurePwd2023, RoleId: Administrator }可用角色类型对照表RoleId权限级别Administrator完全控制权限Operator常规操作权限ReadOnly只读权限4.2 用户信息修改的原子性操作修改用户信息需要遵循ETag机制先获取用户当前信息包含ETag使用获取到的ETag进行修改PATCH https://{{deviceip}}/redfish/v1/AccountService/Accounts/10 Headers: { X-Auth-Token: {{X-Auth-Token}}, Content-Type: application/json, If-Match: {{ETag}} } Body: { Password: NewSecurePwd2024 }关键点ETag机制防止并发修改冲突类似乐观锁机制5. 网络配置与BIOS设置的进阶技巧5.1 管理网络接口配置获取网口信息时注意MAC地址定位GET https://{{deviceip}}/redfish/v1/Managers/1/EthernetInterfaces/10c3ab155768修改IP地址的完整示例PATCH https://{{deviceip}}/redfish/v1/Managers/1/EthernetInterfaces/10c3ab155768 Headers: { X-Auth-Token: {{X-Auth-Token}}, Content-Type: application/json, If-Match: {{ETag}} } Body: { IPv4Addresses: [{ Address: 192.168.100.100, SubnetMask: 255.255.255.0, Gateway: 192.168.100.1 }] }5.2 BIOS参数批量调整获取当前BIOS设置GET https://{{deviceip}}/redfish/v1/Systems/1/Bios/Settings修改启动顺序的实战示例PATCH https://{{deviceip}}/redfish/v1/Systems/1/Bios/Settings Headers: { X-Auth-Token: {{X-Auth-Token}}, Content-Type: application/json, If-Match: {{ETag}} } Body: { Attributes: { BootMode: Uefi, BootTypeOrder0: NvmeDrive, BootTypeOrder1: UsbDrive, BootTypeOrder2: PXE } }6. 构建自动化测试工作流将12个操作封装为Postman集合后可以通过Newman命令行工具集成到CI/CD流程newman run Redfish_Collection.json \ --env-var deviceip192.168.1.100 \ --env-var bmc_useradmin \ --env-var bmc_passwordYourPwd \ --reporters cli,json典型工作流阶段预检阶段验证BMC连通性、获取资产快照配置阶段网络设置、用户管理、BIOS调整验证阶段检查配置生效情况恢复阶段回滚测试环境在真实项目中我们通过这种方案将服务器固件更新的平均耗时从45分钟/台缩短到8分钟/台且完全避免了人工操作错误。