Redfish介绍和Postman工具使用

Redfish是一个用于替代IPMI的可扩展平台管理API,设计用于大规模服务器和云环境的带外管理。它基于RESTful接口和JSON数据模型,强调可扩展性、灵活性、互操作性和简易性,支持系统级别的管理功能,且允许通过POST,GET,PATCH,DELETE等HTTP方法操作资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Redfish

Redfish的诞生是为了替代IPMI ,由于IPMI自身的局限性和安全性缺陷,IPMI 在2015年公布2.0 v1.1标准后,不再更新,被RedFish永久代替

Redfish 可扩展平台管理 API(The Redfish Scalable Platforms Management API(“Redfish”))是一种新的规范,其使用 RESTful 接口语义来访问定义在模型格式中的数据用于执行带外系统管理 (out-of-band systems management)。其适用于大规模的服务器从独立的服务器到机架式和刀片式的服务器环境,而且也同样适用于大规模的云环境。现在行业中已有几个带外系统管理标准(事实标准和法律标准)。在实现时,他们都有很大的差别。他们是针对嵌入式环境的单一服务器而开发,或基于过时的软件建模结构。当前,没有一种业界标准,既简单易用,符合新兴编程标准,易于嵌入,又能满足大型数据中心和云计算的需求。

Redfish 可扩展的平台管理 API(The Redfish Scalable Platform Management API(“Redfish”))是一个管理标准,使用数据模型表示并且包含超媒体 RESTful 接口。因为它是基于 REST,REST比其他解决方案更容易使用和实施。因为它是面向模型的,它能够表达现代系统组件之间的关系,以及服务和组件的语义。它也可以很容易地扩展。通过使用 REST 超媒体方法,Redfish 可以表达来自多个供应商的各种各样的系统。通过要求JSON 表示,各种各样的资源可以被规范化的方式创建,不仅是为了提高可扩展性,而且在大多数编程环境中负载(payload)可以很容易地被解释,以及人检查数据时有较好的相对直观性。模型是采用一个可互操作的 Redfish 模式展现,并且采用OData模式表示并可以翻译为一个JSON模式表示。并且消息的负载采用符合 0Data JSON约定的JSON 表示。将资源的 Redfish 模式定义放入一个机器可读格式的能力,允许数据与元数据之间建立关联,并且没有阻碍 Redfish服务和元数据,从而实现更高级的客户场景(例如许多数据中心和云环境)。

Redfish通过定义所有的API为RESTful形式的API来完成。REST(REpresent State Transfer,REST),这个概念从Web API而来,相对于传统的SOAP API,RESTful的API定义很简单(如:POST,GET,PUT或DELETE),将对象的状态State,用JSON或XML格式在服务器和Client之间传递,这也是它的名字的由来。

在这里插入图片描述

Redfish 旨在提供规范实现以下目标:

  1. 可扩展(scalable)一支持云服务环境中独立机器和机架设备。
  2. 灵活(flexible)一-支持当今服务中的各种各样的系统。
  3. 可延展(extensible)-- 在数据模型框架内支持新的和特定厂商提供的能力
  4. 向后兼容(backward compatible)一一使新功能可以被添加,同时保留规范的早期版本。
  5. 互操作(interoperable)一一提供一个有用的需求基线,从而确保跨多个供应商的常见功能和实现的一致性。
  6. 专注系统(system-focused)一-有效支持所需的最常见的平台硬件管理功能,从而被应用在可扩展的环境,同时也能够管理当前的服务器环境。
  7. 基于标准(standards based)一一利用被广泛接受和在今天的环境中使用的协议和标准,特别是,今天被广泛采用的基于 web 客户端的编程环境。
  8. 简单(simple)一一可以被软件开发人员直接使用,不需要高度专业化的编程技能或系统知识。
  9. 轻量级(lightweight)-减少在管理系统上实现和验证 Redfish 服务的复杂性和成本。

设计原则

以下设计原则和技术用来帮助交付之前所述的目标和特点:

  1. 提供一个使用JSON 负载和实体数据模型的 RESTful 接口
  2. 从数据模型分离协议,使他们能够被独立修改
  3. 指定协议和模式的版本规则。
  4. 利用互联网协议标准优势,满足构建要求,比如JSON,HTTP,OData,以及本文档所引用的 RFC。
  5. 集中在带外访问,可在现有 BMC 和固件产品上实现
  6. 组织模式以呈现增值特性与标准化的项目
  7. 使数据尽可能与上下文中的定义一样明白
  8. 保持实现的灵活性。不将接口与任何特定的底层实现架构进行绑定。“规范接口而不是实现。”
  9. 专注于最广泛使用的“共同特性 (common denominator)”功能。避免增加复杂性到只有一小部分用户可以使用的地址功能,。
  10. 避免放置复杂性到管理控制器上,从而可以更好地支持在客户端上的操作。

Resource map

下图为DMTF组织定义的Redfish资源示意图,我们可以看到3大分支——Systems(系统的逻辑视图) 、Chassis(系统的物理视图)和 Managers(BMC功能)。

在这里插入图片描述

Postman

Postman 是一个用于 API 测试的工具

GET 方法用于检索资源的表示。该表示可以是一个资源或集合。服务将返回使用在Accept 头中指定的一个媒体类型的表示,从而符合媒体类型部分媒体类型的需求。如果Accept 头不存在,服务返回的资源表示为 application /json。
HTTP GET方法应当用于检索资源,并不会引起任何副作用。服务应当忽略GET的正文内容。

PATCH方法是用于执行更新已有资源的首选方法。修改资源请求在请求正文中被发送。请求中没有指定的属性不可以被PATCH请求直接改变。在更新完成后,响应或者是空,或是一个资源的表示。对某些字段实现可能基于它自己的策略而拒绝更新操作,如果是这样,实现不适用任何更新请求。
服务应当支持更新资源的PATCH方法。如果资源不能被更新,应当返回状态码405。
在任何服务器端转换后,服务可以在响应体中返回资源的表示。
如果请求中的属性不能被更新(例如当一个属性是只读时),应当返回状态码200,以及包含指定不可更新属性声明的资源表示。在这个成功的案例中,资源中的其它属性可能被更新。
如果客户端对一个集合指定一个PATCH请求,服务应该返回状态代码405。

POST方法被用于创建一个新的资源。POST请求被提交到资源的集合,其中,新资源属于该集合。
提交一个POST请求到代表一个集合的一个资源,相当于提交相同的请求到该资源的成员属性。支持将成员添加到集合的服务应当支持两种形式。
服务应当支持POST方法用于创建资源。如果资源不提供被创建任何事物,应当返回状态码405。
创建请求的主体包含一个被创建对象的表示。服务可以忽略任何服务控制属性(例如id),强制那些属性被服务覆盖。服务应当设置位置头 (location)为新创建资源的 URI。成功创建请求的响应应该是 201(被创建),可能包括一个新创建资源表示的响应主体。

DELETE方法被用于删除一个资源。
对于可以删除的资源,服务应当支持Delete方法。如果资源不能被删除,应当返回状态码405。
在响应体中,服务可能返回一个刚刚删除的资源的表示。
对一个集合,如果客户指定一个DELETE请求,服务应该返回状态代码405。
如果资源已被删除,服务可能返回状态代码404或一个成功代码。

Postman 使用例子

查看服务器CPU信息

操作类型:
GET
https://{{deviceip}}/redfish/v1/Systems/1/Systems/1/Processors/1
请求头:
X-Auth-Token:{{X-Auth-Token}}
请求消息体:

在这里插入图片描述

添加BMC用户

操作类型:
POST
https://{{deviceip}}/redfish/v1/AccountService/Accounts
请求头:
X-Auth-Token:{{X-Auth-Token}}
Content-Type:application/json
请求消息体:
{
“UserName”:“xxxxxx”,
“Password”:“12345678”,
“RoleId”:“Administrator”,
“Enabled”: true,
“Locked”: false
}
在这里插入图片描述

修改用户名称

这里需要Etag
操作类型:
GET
https://{{deviceip}}/redfish/v1/AccountService/Accounts/xxxxx
请求头:
X-Auth-Token:{{X-Auth-Token}}
请求消息体:

在这里插入图片描述
操作类型:
PATCH
https://{{deviceip}}/redfish/v1/AccountService/Accounts/4
请求头:
X-Auth-Token:{{X-Auth-Token}}
Content-Type:application/json
If-Match:{{ETag}}
请求消息体:
{
“UserName” :“xxxxxxx”
}
在这里插入图片描述

<think>嗯,用户问的是在Postman里用Redfish设置选项。首先,我需要确认用户对这两个工具的了解程度。Postman是常用的API测试工具,而Redfish是一种用于硬件管理的RESTful接口标准,主要用于服务器管理。用户可能是在尝试通过Postman来测试或配置Redfish API,但不太清楚具体的设置步骤。 首先,用户可能需要了解如何在Postman中创建一个新的请求,并设置正确的HTTP方法(比如GET、POST)。然后,关于Redfish的认证方式,通常使用Basic Auth或者Session-based认证,所以需要指导用户如何在Postman的Authorization选项卡里配置这些信息,比如填写用户名密码。 接下来,Redfish API的URL结构可能对用户来说比较陌生。例如,根端点通常是`https://<IP>/redfish/v1`,用户需要替换成他们自己的服务器IP。这里可能需要提醒用户确保网络可达,并且端口正确,可能还有SSL证书的问题,是否需要忽略证书验证。 另外,请求头可能需要设置特定的Content-Type,比如`application/json`,特别是POST或PATCH请求时。用户可能忽略了这一点,导致请求失败。同时,Redfish的响应数据较大,可能需要指导用户如何查看解析JSON响应,或者使用Prettify功能来格式化数据。 用户可能还不太清楚如何利用Postman的环境变量来管理不同的服务器配置,比如多个IP地址或不同的认证信息。这时候,可以建议他们设置环境变量,方便切换不同的测试环境。 另外,考虑到Redfish的一些操作可能需要特定的HTTP头部,比如OData-Version,可能需要提醒用户检查文档是否需要添加这些头部。还有,对于POST请求,用户需要知道如何构造正确的请求体,可能需要举例说明,比如创建一个新用户账号的JSON结构。 用户可能遇到的常见问题包括认证失败、404错误或者500内部错误。这时候需要指导他们检查用户名密码是否正确,URL是否正确,以及请求体是否符合API的要求。此外,SSL证书问题也是一个常见障碍,特别是在测试环境中,可能需要关闭SSL验证,但提醒用户生产环境中不建议这样做。 总结来说,用户需要一步步的指导,涵盖从创建请求、设置认证、填写URL、配置头部到处理响应常见问题排查。确保每个步骤都清晰,并考虑到可能的错误点,帮助用户顺利使用Postman进行Redfish API的测试管理。</think>在 **Postman** 中使用 **Redfish** 进行 API 测试或管理时,需要正确配置请求的选项(如认证、URL、头部、请求体等)。以下是关键设置步骤注意事项: --- ### **1. Redfish 基础信息** Redfish 是一种基于 REST 的硬件管理标准(常用于服务器、存储设备等),其 API 通常通过 HTTPS 提供,支持 `GET`、`POST`、`PATCH`、`DELETE` 等操作。 - **典型 Redfish 根端点**: ``` https://<设备IP>/redfish/v1 ``` --- ### **2. Postman 设置步骤** #### **(1) 创建新请求** - 选择 HTTP 方法(如 `GET`、`POST`)。 - 输入 Redfish API 的完整 URL(例如获取系统信息): ``` https://<设备IP>/redfish/v1/Systems/1 ``` #### **(2) 认证配置** Redfish 通常使用 **Basic Auth** 或 **Session-Based 认证**: - 在 **Authorization** 选项卡: - 选择认证类型:`Basic Auth`。 - 填写用户名密码(通常是设备的管理员账号,如 `admin`/`password`)。 #### **(3) 请求头(Headers)** - 添加以下常用头信息: ```plaintext Content-Type: application/json OData-Version: 4.0 # 某些 Redfish 接口需要 ``` #### **(4) 请求体(Body)** - 对 `POST` 或 `PATCH` 请求(如修改配置): - 选择 `raw` 格式,设置为 `JSON`。 - 输入符合 Redfish Schema 的 JSON 数据(参考设备文档)。 **示例(创建用户)**: ```json { "UserName": "new_user", "Password": "password123", "RoleId": "Operator" } ``` #### **(5) SSL 证书(可选)** - 如果是自签名证书,需在 Postman 的 **Settings** 中关闭 SSL 验证(仅限测试环境): ```plaintext Settings → General → SSL certificate verification → OFF ``` --- ### **3. 常用 Redfish 端点示例** | 操作 | HTTP 方法 | URL 示例 | |--------------------|-----------|-----------------------------------| | 获取系统信息 | GET | `/redfish/v1/Systems/1` | | 重启服务器 | POST | `/redfish/v1/Systems/1/Actions/ComputerSystem.Reset` | | 查看存储卷 | GET | `/redfish/v1/Systems/1/Storage/1/Volumes` | --- ### **4. 常见问题排查** - **认证失败**:检查用户名/密码,确认是否启用 HTTPS。 - **404 错误**:确认 URL 路径是否符合设备的 Redfish 实现(不同厂商可能有差异)。 - **500 错误**:检查请求体 JSON 格式是否正确,或设备是否支持该操作。 --- ### **5. 进阶技巧** - **环境变量**:在 Postman 中设置环境变量(如 `{{ip}}`)动态管理设备 IP。 - **脚本测试**:在 **Tests** 选项卡中编写 JavaScript 脚本,自动化验证响应结果。 通过以上配置,你可以直接在 Postman 中与 Redfish API 交互,实现服务器状态监控、固件更新、电源管理等操作。建议结合设备的 Redfish 文档调整具体参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值