Saturday, April 6, 2024
Redfish 简介
伺服器管理標準
基於 RESTful API
JSON 格式的 HTTPS
Schema-backed但可讀性高
Redfish 的誕生
Redfish 是在2015年由DMTF(Distributed Management Task Force) 這個組織開始著手建立的伺服器管理標準,官方的描述是
A standard, Redfish is designed to deliver simple and secure management for converged, hybrid IT and the Software Defined Data Center (SDDC).
作為一項標準,Redfish 旨在為converged, hybrid IT 和 SDDC 提供簡單而安全的管理
這邊的 SDDC 就是"Software Defined Data Center (SDDC) - 軟體定義數據中心",簡單來說就是希望未來能提供單一軟體工具集來管理這些虛擬化資源。 但在伺服器的領域,長期發展且成熟的協定一直是IPMI,對於數據中心的管理者/客戶端的反饋是他們並不瞭解IPMI這個協定,他們的人員都需要重新學習,而且很多現代化的管理工具並不能直接應用在IPMI上面,所以Redfish誕生的契機就出現了
What is Redfish
- 用於 IT 基礎架構的行業標準 RESTful API
- 基於 Odata v4 的 JSON 格式的 HTTPS
- 應用程式、GUI 和腳本同樣可用
- Schema-backed但可讀性高
Redfish Key technology HTTP
超文本傳輸協定 (HTTP) 是分散式、協作、超媒體資訊系統的應用層協定。 它是一種通用、無狀態的協定,透過擴展其請求方法(Method)、錯誤代碼(Status-Code)和頭標(Header),可用於超文本之外的許多任務。
底下是HTTP協定的概念圖,詳細可以參考Hypertext Transfer Protocol -- HTTP/1.1,例如我們想要看Redfish 的Service root URL ,Request-Line就是 GET /redfish/v1 HTTP/1.1
我們可以透過回傳回應中的錯誤代碼(Status-Code)來判斷請求的狀態
常用的Method(GET, POST, PATCH, DELETE)
- GET:獲取,例如獲取系統帳戶訊息GET /redfish/v1/AccountService
- POST:
- 新增,例如新增一個帳戶 POST /redfish/v1/AccountService/Accounts {"id":"xxx" "password":"xxx"}
- 執行,例如執行韌體更新,開關機等動作
- PATCH:更新,例如更新帳戶名字 PATCH /redfish/v1/AccountService/Accounts/01 {"Name": "123"}
- DELETE:刪除,例如刪除一個帳戶 DELETE /redfish/v1/AccountService/Accounts/01
常見的錯誤代碼(Status-Code)
Status-Code 是由三個數位所組合組成的,目的是企圖去理解和滿足請求
- 1xx:Informational (資訊):提供協定級資訊
- 2xx:Success(成功):用戶端請求被接受(成功)
- 200:OK
- 201: Created:申請資源創建成功
- 202:Accepted (已接受):用於報告異步操作成功
- 204:No content (無內容):當 API 想要發送空內容或沒有內容時響應體
- 3xx:Redirection (重定向):用戶端請求由伺服器重定向到滿足客戶端請求的不同端點
- 301:Moved Permanently (永久移動):用於重新定位的資源
- 302:Found (找到)
- 4xx:Client error(用戶端錯誤):客戶端錯誤
- 400:Bad request (錯誤請求)
- 401:Unauthorized (未經授權)
- 403:Forbidden (禁止)
- 404:Not found (未找到)
- 405:Method not allowed (方法不允許)
- 5xx:Server error (伺服器錯誤)
- 500: Internal server error(內部伺服器錯誤)
HTTPS (Hyper Text Transfer Protocol Secure)
HTTPS 對在瀏覽器和網站之間發送的數據進行加密,使其比 HTTP 更安全,通信協定使用傳輸層安全性 (TLS) 或以前的安全套接字層 (SSL) 進行加密。 TLS的概念可以參考 [OpenBMC] LDAP 設定(三) - LDAPS(LDAP over TLS) TLS的部分
From: https://iris123321.blogspot.com/2022/02/10-redfish.html
Monday, February 19, 2024
[OpenBMC] OpenBMC Web User Interface Development
https://github.com/openbmc/docs/blob/master/development/web-ui.md
Wednesday, December 2, 2020
ipmitool
Description
这个程序能够使你通过一个kernel设备驱动或者一个远程系统,利用 IPMI v1.5 或 IPMIv2.0 来管理本地系统的任何一个智能平台管理接口 (IPMI) 功能。
这些功能包括打印 FRU (现场可替换装置) 信息、LAN 配置、传感器读数、以及远程机架电源控 制。
一个本地系统接口的IPMI管理功能需要一个兼容 IPMI 的 kernel 驱动程序被安装以及配置。
在 linux 中,这个驱动叫做 OpenIPMI,他被 包括在了标准化分配中。
在 Solaris 系统中,这个驱动叫做 BMC,他被包括在了 Solaris 10 中。
远程控制的管理需要授权以及配置 IPMI-over-LAN 接口。根据每个系统独特的需要,它可以通过系统接口来使 LAN 接口使用 ipmitool。
Reference
https://lockless.github.io/2018/09/17/IPMI-Command/#more
Tuesday, September 15, 2020
n8n index
【n8n免費本地端部署】Windows版|程式安裝x指令大補帖 【一鍵安裝 n8n】圖文教學,獲得無限額度自動化工具&限時免費升級企業版功能
-
模板直到实例化时才生成代码,所以获得模板代码编译错误的时机较晚。编译器在3个阶段报告错误: 1. 第一阶段是编译模板本身时,此时一般错误很少,只是 检查语法错误 ,不检查依赖于类型的代码 第二个阶段是遇到使用模板时,对函数模板调用编译器会 检查实参数目是否正确 。还要检查 参数类...
-
编译器遇到一个模板定义时,并不生成代码。只有当实例化模板时编译器才生成代码。 当调用一个函数时, 编译器只需要掌握函数的声明,函数定义不必已经出现 ,即使不定义,编译也会通过, 最终会在链接时才发现undefined symbol这个熟悉的错误 。 但对于模板来说却不同,生成一...
-
實參 (argument) 全称为"实际参数"是在调用时传递给函数的参数. 实参可以是常量、变量、表达式、函数等, 无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值, 以便把这些值传送给形参。 因此应预先用赋值,输入等办法使实参获得确定值。 形...
