Redfish

Riferimento del driver Redfish - connessione HTTPS a un BMC, indirizzamento per percorso della risorsa più puntatore JSON, letture, scritture PATCH e tipi.

Visualizza come Markdown

Il driver Redfish legge e scrive i servizi di gestione DMTF Redfish: l'API REST esposta dai BMC dei server (i controllori di gestione della scheda madre), dai telai e da altro hardware di centro dati per la gestione fuori banda. È un normale driver in modo client, cioè è Ganter Lab a collegarsi all'apparecchiatura, e il trasporto è sempre HTTPS: i BMC induriti non espongono altro, e il driver non scende mai da solo all'HTTP in chiaro.

Punti tipici letti in questo modo: lo stato di alimentazione, lo stato del secure boot, lo stato di salute del telaio e del gestore, la versione del firmware, le temperature e le letture delle ventole dalle risorse termiche.

Campi di connessione

Campo Che cos'è Formato Predefinito
Indirizzo host Il nome host o l'indirizzo IP del servizio Redfish. Nome host o IP vuoto
Porta TCP La porta su cui il servizio risponde. I controllori di gestione rispondono comunemente sulla 443, e un servizio pubblicato altrove lo dice qui. Da 1 a 65535 443
Nome utente L'account del BMC usato per l'autenticazione HTTP Basic. Vuoto lascia le richieste anonime, cosa a cui un servizio protetto risponde con un errore di autorizzazione. Testo libero vuoto
Password del dispositivo La password abbinata al nome utente. Protetta a riposo per utente di Windows, così il database di configurazione non contiene mai il valore in chiaro; una password inserita sotto un altro account Windows si presenta come illeggibile e va reinserita. Testo libero vuoto

Alla connessione il driver verifica il servizio leggendo la radice del servizio (/redfish/v1/). Il certificato TLS del BMC deve superare la normale convalida dei certificati di Windows: un certificato BMC autofirmato deve essere considerato attendibile da questa macchina prima che il dispositivo si colleghi. Una connessione che fallisce dice perché nella pagina Eventi e nel file di diario della giornata, con l'errore sottostante dietro, così una password rifiutata e un certificato non attendibile si distinguono.

L'intervallo di interrogazione è configurabile: il valore predefinito del dispositivo (1000 ms) vale per ogni tag che non dichiari il proprio.

Indirizzamento dei tag

Un tag Redfish viene indirizzato da un percorso della risorsa più un puntatore JSON facoltativo dentro il documento che quella risorsa restituisce:

Campo Che cosa fa Valori Predefinito
Percorso della risorsa Il percorso, relativo alla radice del servizio, della risorsa Redfish da leggere con una GET, per esempio redfish/v1/Chassis/1/Thermal. Testo libero (obbligatorio) vuoto
Puntatore JSON (vuoto = intero documento) Un puntatore RFC 6901 che seleziona un campo del JSON restituito, per esempio /Temperatures/0/ReadingCelsius. Gli elementi di array si indirizzano per indice; ~1 fa da carattere di fuga per una / dentro il nome di un campo e ~0 per una ~. La / iniziale mancante viene aggiunta per te. Vuoto restituisce l'intero documento come testo. Puntatore JSON oppure vuoto vuoto

Esempi dell'indirizzo composto (mostrato in sola lettura come anteprima dell'origine sul bus):

  • redfish/v1/Systems/1#/PowerState: lo stato di alimentazione del sistema, come stringa.
  • redfish/v1/Chassis/1/Thermal#/Temperatures/0/ReadingCelsius: il primo sensore termico, come numero.
  • redfish/v1/Systems/1/SecureBoot#/SecureBootEnable: il secure boot, come booleano.

A ogni lettura il driver esegue una GET sulla risorsa, analizza il JSON, segue il puntatore e converte il risultato nel tipo di dato dichiarato dal tag. Un puntatore che non nomina nulla nel documento, e un campo che il documento porta come null JSON, si leggono entrambi come nessun valore: il tag passa a cattiva qualità e la sua politica di lettura fallita decide che cosa viene presentato, invece di far arrivare la parola null come lettura buona. Una risposta che non è JSON viene analizzata direttamente secondo il tipo dichiarato.

Scritture

I tag con una modalità di accesso scrivibile eseguono una PATCH sul campo indirizzato: il driver costruisce il documento JSON più piccolo che copre solo il percorso del puntatore (per /Parent/Child, il corpo {"Parent":{"Child":<value>}}) e lo invia alla risorsa. Da questo discendono due vincoli:

  • Una scrittura richiede un puntatore JSON. Un tag sull'intero documento (puntatore vuoto) non si può scrivere: il pannello del tag rifiuta la combinazione mentre stai modificando, dicendo che il campo manca, e un tentativo che raggiunga comunque il servizio fallisce con il motivo nel diario.
  • È il BMC a decidere che cosa è scrivibile; una PATCH che il servizio respinge si legge come scrittura fallita.

Come dappertutto, il valore che scrivi nella casella di scrittura del tag è il valore ingegneristico, e le fasi di conversione del tag vengono percorse all'indietro prima che il valore grezzo vada sul bus, come è descritto nella pagina Connector.

Tipi di dato supportati

Boolean, Int32, Int64, Float, Double e String. Scegli il tipo che corrisponde al campo JSON: i booleani per gli interruttori come SecureBootEnable, i numeri per le letture, le stringhe per gli stati come PowerState oppure Health.

Comandi

Un servizio Redfish pubblica un'azione per ogni cosa che gli si può chiedere di fare, ciascuna al proprio percorso sotto la risorsa su cui agisce. La stazione non le indovina, perché solo la documentazione dell'hardware dice quali esistono: le dichiari tu sul dispositivo, nella scheda Comandi della sua pagina. Ogni comando porta un nome, il percorso dell'azione (redfish/v1/Systems/1/Actions/ComputerSystem.Reset) e, facoltativamente, il nome dell'unico valore che accetta (ResetType); il verbo Invia della riga lo manda, e quello che il servizio ha risposto viene riferito indietro. Un comando diventa anche un metodo sul dispositivo nello spazio degli indirizzi OPC UA proprio di questa stazione, così qualunque cosa sappia chiamare un metodo lo può emettere.

Il valore viaggia come corpo della richiesta. Un valore che è già JSON viene inviato come è scritto; qualunque altra cosa viene inviata come {"<the name you declared>": "<the value>"}, che è la forma che l'azione di reset propria di Redfish si aspetta.

Rilevamento

Il pulsante Rileva legge un solo servizio: metti il suo indirizzo nella scheda Ambito della scansione della pagina del driver (https://bmc-host, oppure l'indirizzo che il fornitore documenta) e la scansione percorre il primo sistema, il primo gestore e il primo telaio di quel servizio, offrendo il dispositivo con quei punti pronti da aggiungere. La scansione legge il servizio in HTTPS e senza credenziali, perché gira prima che esista il dispositivo che le porterebbe, quindi un servizio che autentica ogni richiesta non risponde nulla e va aggiunto a mano. Il rilevamento SSDP proprio di Redfish ha bisogno del multicast UDP, che il driver interno al processo non fa, quindi diffondendo non si trova nulla: la scansione legge l'indirizzo che le dai.