DMTF Redfish 概念介绍
今天來聊聊 Redfish
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誕生的契機就出現了
什么是 Redfish?
- 用于 IT 基礎架構的行業標準 RESTful API
- 基于 Odata v4 的 JSON 格式的 HTTPS
- 應用程序、GUI 和腳本同樣可用
- Schema-backed但可讀性高
Redfish Data model
Redfish Data model (紅魚的資料模型)_yeiris的博客-CSDN博客今天來聊個簡單的概念,Redfish 的 Data model上面是Redfish Spec的內容,提到Redfish 將 Protocol 和 Data model 的版本分開了,那這邊的Data model 是指什么呢?什么是Data model ?在軟體工程中,在系統開發前,需要先作需求的統計和分析,這時候我們會將需要處理的資料(Data requirement) 作初步的概念設計(conceptual design),產生概念模型 (Conceptual schema),這是一個hihttps://blog.csdn.net/yeiris/article/details/123242151
Redfish 關鍵技術
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的部分
Restful API
REST( Representational State Transfer, 表現層狀態轉移),它是一種設計風格,RESTful 是轉為形容詞,RESTful 形容以此規范設計的 API,稱為 RESTful API
它的約束(constraints)有以下幾項
- 主從架構 Client-server
- 無狀態 Statelessness
- 可暫存 Cacheable
- 統一介面 Uniform interface
- 階層式系統 Layered systems: 每一個資源有對應至少一個的URI
- [Optional] 依需求提供程式 Code on demand
OData
OData(The Open Data Protocol) 是一種基于REST的數據訪問方式,該標準由微軟發起,前三個版本1.0、2.0、3.0是微軟開放標準,第4.0版于2014年在OASIS投票通過成為 開放工業標準。
The Open Data Protocol (OData) enables the creation of REST-based data services which allow resources, identified using Uniform Resource Locators (URLs) and defined in a data model, to be published and edited by Web clients using simple HTTP messages.
This specification defines the core semantics and the behavioral aspects of the protocol.
OData - the Best Way to REST
但odata我沒有很熟,所以這邊只會簡單介紹一些Redfish會用到的(我大概知道的)
OData?URL
Odata定義了一組推薦的(但不是必需的)規則,用于構建 URL 以識別 OData 服務公開的數據和元數據,以及一組保留的 URL 查詢字符串運算符。
- Service root URL: ?url 的服務根是服務的基本 url。當對該 url 發出 GET 請求時,它將返回一個服務文檔,該文檔定義了通過該服務可用的所有資源。Redfish 的Service root URL 是?/redfish/v1 這在redfish spec中有定義
- Resource path : REST 定義的資源是可通過 HTTP 使用標準 GET、POST、PUT、PATCH 和 DELETE 方法訪問的對象。
- Query options: 查詢選項本質上是標準化的查詢字符串參數,可以傳遞給 OData 服務以對請求的資源運行查詢。例如對資源的filter, count, skip, order, search 和 format。所有 OData 查詢選項都以 $ 符號為前綴,并且不區分大小寫。
另外在service root URL后面加上$metadata可以看到Service的實體模型(entity model),內容根據 [OData-CSDLJSON] 或 [OData-CSDLXML]?
OData-CSDLXML
OData 服務是根據實體模型來描述的。 CSDL(Common Schema Definition Language) 使用XML(Extensible Markup Language?) 定義了由 OData 服務公開的實體數據模型的表示法,以及來自 W3C XML 模式定義語言的進一步構建塊 (XSD) 。
簡單來說,就是定義我們常聽到的Redfish的Schema和Property,這樣使用者可以知道它會得到的訊息格式,進而先處理(微軟有些tool可以直接將CSDL轉為結構或資料庫),這部分DMTF有CSDL的教學文件,同時也有一個Redfish Service Validator 的tool 來驗證我們的Redfish Services有沒有符合定義的CSDL
Redfish_School-Introduction_to_CSDL (dmtf.org)https://www.dmtf.org/sites/default/files/Redfish_School-Introduction_to_CSDL.pdfGitHub - DMTF/Redfish-Service-Validatorhttps://github.com/DMTF/Redfish-Service-Validator
OData-JSON
OData 定義一些特定的property 來擴展 JSON。舉一些常見的例子,詳細可以參閱Spec
- @odata.id:entity-id與實體的規范URL相同,通常是必須存在的
- @odata.count:計數控制信息僅出現在響應中,可以注釋在任何集合中
Redfish 的版本怎么看
Redfish的版本怎么看 ? CSDN博客https://blog.csdn.net/yeiris/article/details/122759365
總結
以上是生活随笔為你收集整理的DMTF Redfish 概念介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python实现九九乘法表代码解释_py
- 下一篇: Win10系统Qt安装及配置