Redfish

Referenz zum Treiber Redfish: HTTPS-Verbindung zu einem BMC, Adressierung über Ressourcenpfad und JSON-Zeiger, Lesevorgänge, Schreibvorgänge per PATCH und Typen.

Als Markdown ansehen

Der Treiber Redfish liest und schreibt Verwaltungsdienste nach DMTF Redfish: die REST-API, die BMCs von Servern (Baseboard Management Controller), Gehäuse und andere Hardware im Rechenzentrum für die Verwaltung außerhalb des Betriebssystems anbieten. Das ist ein gewöhnlicher Treiber im Client-Betrieb, Ganter Lab verbindet sich mit der Anlage, und der Übertragungsweg ist immer HTTPS: Gehärtete BMCs bieten nichts anderes an, und der Treiber fällt von sich aus nie auf einfaches HTTP zurück.

Typische Punkte, die so gelesen werden: Betriebszustand der Stromversorgung, Zustand von Secure Boot, Zustand von Gehäuse und Verwaltungscontroller, Firmwareversion, Temperaturen und Lüfterwerte aus den Ressourcen zur Wärme.

Verbindungsfelder

Feld Was es ist Format Standard
Host Hostname oder IP-Adresse des Redfish-Dienstes. Hostname oder IP leer
Port Der Port, auf dem der Dienst antwortet. Verwaltungscontroller antworten üblicherweise auf 443, und ein anderswo veröffentlichter Dienst sagt es hier. 1 bis 65535 443
Benutzername Das Konto am BMC für die Anmeldung über HTTP Basic. Leer lässt die Anfragen anonym, was ein geschützter Dienst mit einem Fehler zur Berechtigung beantwortet. Freitext leer
Passwort Das Passwort zum Benutzernamen. Im Ruhezustand je Windows-Benutzer geschützt, die Konfigurationsdatenbank hält den Klartext also nie; ein unter einem anderen Windows-Konto eingegebenes Passwort erscheint als unlesbar und muss neu eingegeben werden. Freitext leer

Beim Verbinden prüft der Treiber den Dienst, indem er die Dienstwurzel (/redfish/v1/) liest. Das TLS-Zertifikat des BMC muss die übliche Zertifikatsprüfung von Windows bestehen: Ein selbst ausgestelltes Zertifikat eines BMC muss von diesem Rechner als vertrauenswürdig eingestuft sein, bevor sich das Gerät verbindet. Eine fehlgeschlagene Verbindung sagt auf der Seite Ereignisse und in der Protokolldatei des Tages, warum, mit dem zugrunde liegenden Fehler dahinter, ein abgelehntes Passwort und ein nicht vertrauenswürdiges Zertifikat sind also auseinanderzuhalten.

Das Abfrageintervall ist einstellbar: Der Standard des Geräts (1000 ms) gilt für jeden Tag, der keinen eigenen nennt.

Adressierung der Tags

Ein Redfish-Tag wird über einen Ressourcenpfad und einen wahlweisen JSON-Zeiger in das Dokument adressiert, das diese Ressource zurückgibt:

Feld Wirkung Werte Standard
Ressourcenpfad Der Pfad der Redfish-Ressource relativ zur Dienstwurzel, die per GET geholt wird, z. B. redfish/v1/Chassis/1/Thermal. Freitext (Pflichtfeld) leer
JSON-Zeiger (leer = ganzes Dokument) Ein Zeiger nach RFC 6901, der ein Feld des zurückgegebenen JSON auswählt, z. B. /Temperatures/0/ReadingCelsius. Elemente eines Feldes werden über den Index adressiert; ~1 schreibt ein / innerhalb eines Feldnamens und ~0 ein ~. Ein fehlendes führendes / wird ergänzt. Leer gibt das ganze Dokument als Text zurück. JSON-Zeiger oder leer leer

Beispiele der zusammengesetzten Adresse (als Vorschau der Quelle auf dem Bus gezeigt, die nur gelesen wird):

  • redfish/v1/Systems/1#/PowerState: der Betriebszustand des Systems als Zeichenkette.
  • redfish/v1/Chassis/1/Thermal#/Temperatures/0/ReadingCelsius: der erste Temperaturfühler, als Zahl.
  • redfish/v1/Systems/1/SecureBoot#/SecureBootEnable: Secure Boot, als Wahrheitswert.

Bei einem Lesevorgang holt der Treiber die Ressource per GET, liest das JSON, folgt dem Zeiger und wandelt das Ergebnis in den erklärten Datentyp des Tags. Ein Zeiger, der nichts im Dokument benennt, und ein Feld, das das Dokument als JSON-null trägt, lesen beide als kein Wert: Der Tag geht auf schlechte Qualität, und seine Regel für Lesefehler entscheidet, was dargestellt wird, statt dass das Wort null als guter Messwert ankommt. Eine Antwort, die kein JSON ist, wird unmittelbar als der erklärte Typ gelesen.

Schreiben

Tags mit einer schreibbaren Zugriffsart schreiben das adressierte Feld per PATCH: Der Treiber baut das kleinste JSON-Dokument, das nur den Pfad des Zeigers abdeckt (bei /Parent/Child den Rumpf {"Parent":{"Child":<value>}}), und sendet es an die Ressource. Daraus folgen zwei Einschränkungen:

  • Ein Schreibvorgang verlangt einen JSON-Zeiger. Ein Tag auf das ganze Dokument (leerer Zeiger) lässt sich nicht schreiben: Der Bereich des Tags lehnt die Kombination schon beim Bearbeiten ab und sagt, dass das Feld fehlt, und ein Versuch, der den Dienst dennoch erreicht, schlägt mit dem Grund im Journal fehl.
  • Der BMC entscheidet, was schreibbar ist; ein PATCH, den der Dienst ablehnt, liest sich als fehlgeschlagener Schreibvorgang.

Wie überall sonst ist der Wert, den Sie in das Schreibfeld des Tags tippen, der technische Wert, und die Umrechnungsstufen des Tags werden rückwärts durchlaufen, bevor der Rohwert auf den Bus geht, wie auf der Seite Connector beschrieben.

Unterstützte Datentypen

Boolean, Int32, Int64, Float, Double und String. Wählen Sie den Typ, der zum JSON-Feld passt: Wahrheitswerte für Kennzeichen wie SecureBootEnable, Zahlen für Messwerte, Zeichenketten für Zustände wie PowerState oder Health.

Befehle

Ein Redfish-Dienst veröffentlicht je eine Aktion für alles, worum er gebeten werden kann, jede unter ihrem eigenen Pfad unter der Ressource, auf die sie wirkt. Die Station rät sie nicht, weil nur die Dokumentation der Hardware sagt, welche es gibt: Sie erklären sie am Gerät, auf der Karte Befehle seiner Seite. Jeder Befehl trägt einen Namen, den Aktionspfad (redfish/v1/Systems/1/Actions/ComputerSystem.Reset) und wahlweise den Namen des einen Werts, den er nimmt (ResetType); der Befehl Ausführen in der Zeile sendet ihn, und was der Dienst geantwortet hat, wird zurückgemeldet. Ein Befehl wird außerdem zu einer Methode am Gerät im eigenen OPC UA-Adressraum dieser Station, alles, was eine Methode aufrufen kann, kann ihn also erteilen.

Der Wert reist als Rumpf der Anfrage. Ein Wert, der bereits JSON ist, wird so gesendet, wie er geschrieben steht; alles andere wird als {"<der Name, den Sie erklärt haben>": "<der Wert>"} gesendet, was die Form ist, die die Reset-Aktion von Redfish selbst erwartet.

Gerätesuche

Die Schaltfläche Suchen liest einen Dienst: Tragen Sie seine Adresse auf der Karte Umfang des Suchlaufs auf der Seite des Treibers ein (https://bmc-host oder die Adresse, die der Hersteller dokumentiert), und der Suchlauf geht das erste System, den ersten Verwaltungscontroller und das erste Gehäuse dieses Dienstes durch und bietet das Gerät mit diesen Punkten fertig zum Hinzufügen an. Der Suchlauf liest den Dienst über HTTPS und ohne Anmeldedaten, weil er läuft, bevor es das Gerät gibt, das sie hielte, ein Dienst, der jede Anfrage anmeldepflichtig macht, antwortet also nichts und wird stattdessen von Hand angelegt. Die eigene Suche von Redfish über SSDP braucht UDP-Multicast, das der Treiber im Prozess nicht macht, über Rundruf wird also nichts gefunden: Der Suchlauf liest die Adresse, die Sie ihm geben.