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. Ein leeres Feld zeigt 443 grau, und der Dienst wird über diesen Port erreicht; ein mit 0 gespeichertes Gerät liest sich genauso. 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 wird angenommen, wenn Windows ihm vertraut oder wenn Sie genau dieses Zertifikat unter Anlagenzugriff auf der Seite dieses Treibers freigegeben haben: Das selbstsignierte Zertifikat, mit dem ein BMC ausgeliefert wird, braucht in Windows nichts installiert. 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 Zertifikat, das auf Freigabe wartet, sind also auseinanderzuhalten.

Das Abfrageintervall ist einstellbar: Der Standard des Geräts (1000 ms) gilt für jedes Tag, das 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: Das 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. Ein Status, den der Dienst außerhalb des Erfolgsbereichs zurückgibt, ist der Dienst, der den Lesevorgang ablehnt: Das Tag geht ebenso auf schlechte Qualität, und sein Grund nennt den Status und einen kurzen Auszug aus dem Fehlerdokument, das der Dienst dazu gesendet hat (HTTP 404 Not Found: …). Jeder andere Lesevorgang ohne Wert sagt ebenfalls, warum: ein Tag ohne Ressourcenpfad, ein Zeiger, der im Dokument nichts benennt, und ein Feld, das als null geführt wird (jeweils mit Ressource und Zeiger), und eine Antwort, die sich nicht als der erklärte Typ lesen lässt. Ein Dienst, der gar nicht antwortet, ist die Verbindung des Geräts, die ausfällt: Das Gerät meldet es und verbindet sich neu, und seine Tags verweisen auf das Gerät. Die rote Zeile des Tags sagt einen solchen Status in der Sprache der Station, bei 401, 403 und 404 mit seiner Bedeutung, und die rote Zeile des Geräts sagt bei jedem Versuch, warum seine Verbindung fehlschlägt, ein Port, der ablehnt, oder ein Status wie 401; die Seite Ereignisse behält die eigenen Worte des Dienstes.

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, wird mit dem Status und einem kurzen Auszug aus dem Fehlerdokument beantwortet, das der Dienst dazu gesendet hat (HTTP 400 Bad Request: …), und wer den Wert geschrieben hat, liest den Grund.

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.

Eine Aktion, die der Dienst ablehnt, wird mit dem Status und einem kurzen Auszug aus dem Fehlerdokument beantwortet, das der Dienst dazu gesendet hat (HTTP 400 Bad Request: …), in denselben Worten wie bei einem abgelehnten Schreibvorgang, und sonst wird nichts am Gerät gestört.

Gerätesuche

Die Schaltfläche Geräte suchen liest einen Dienst: Tragen Sie seine Adresse auf der Karte Suchbereich 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.

Ein Redfish-Gerät, das Sie schon haben, findet seine Punkte von seiner eigenen Seite aus: Tags suchen im Kopf seiner Karte der Tags durchläuft dieselben Ressourcen, angemeldet mit dem Benutzernamen und dem Passwort des Geräts, sodass auch ein Dienst antwortet, der jede Anfrage anmeldepflichtig macht, und bietet nur die Punkte an, für die das Gerät noch kein Tag hat (siehe Die Tags eines Geräts suchen).

Anlagenzugriff

Ein BMC antwortet meist mit einem eigenen Zertifikat, selbstsigniert oder vom Hersteller ausgestellt, für das keine in Windows installierte Wurzel bürgt. Diese Wurzel muss auf diesem Rechner nicht installiert werden. Die erste Verbindung wird abgewiesen, das Gerät zeigt im Baum und auf seiner Seite Wartet auf Freigabe des Zertifikats, deren Schaltfläche Zertifikat prüfen diese Karte auf dem Zertifikat öffnet, und das Zertifikat wartet unter Anlagenzugriff am Ende der Seite des Redfish-Treibers, derselben Karte wie auf der Seite des OPC UA-Treibers, bis Sie entscheiden:

Gruppe Was sie zeigt Was Sie tun können
Wartet auf Freigabe Jedes abgewiesene Zertifikat unter dem Namen, den es behauptet: sein SHA-256-Fingerabdruck, die Adresse, unter der es angetroffen wurde, wann es zuletzt versucht wurde und wie oft, und seine Details (Antragsteller, Aussteller, Domänennamen, Gültigkeitsdaten). Das Zertifikat, das Zertifikat prüfen eines Geräts geöffnet hat, ist als Zur Prüfung ausgewählt markiert. Freigeben nimmt das Zertifikat ab dem nächsten Verbindungsversuch an. Sperren weist es weiter ab, ohne es hier erneut aufzuführen. Alle ausstehenden Zertifikate verwerfen leert die Liste, ohne etwas freizugeben oder zu sperren.
Freigegebene Anlagen Die Zertifikate, die Sie freigegeben oder importiert haben, mit der Angabe, wer wann entschieden hat, und der Adresse, unter der jedes zuletzt angetroffen wurde. Freigabe zurücknehmen schließt die Verbindung und bringt das Zertifikat in die Liste zurück. Zertifikat importieren gibt eine öffentliche Zertifikatsdatei, die Sie bereits haben (.der, .cer, .crt oder .pem), vor der ersten Verbindung frei.
Gesperrte Anlagen Die Zertifikate, die Sie gesperrt haben. Ein gesperrtes Zertifikat wird abgewiesen, auch wenn Windows ihm vertraut. Entsperren bringt das Zertifikat in die Liste zurück, ohne es freizugeben.

Prüfen Sie den Fingerabdruck mit derjenigen Person, die den Server betreut, bevor Sie das Zertifikat freigeben. Eine Freigabe nimmt genau dieses Zertifikat an und kein anderes, und nur innerhalb seiner Gültigkeitsdaten; sie steht für die Wurzel ein, die Windows fehlt, und für den Namen, den das Zertifikat trägt, sodass sich ein BMC, der über seine IP-Adresse angewählt wird, verbindet, obwohl sein Zertifikat einen anderen Namen trägt, und sonst wird am Zertifikat nichts gelockert. Antwortet die Anlage an einer Adresse, deren Zertifikat Sie freigegeben haben, mit einem anderen (ein erneuertes Zertifikat, ein ausgetauschter Controller), hört das Lesen auf, das neue wartet hier, und die Station meldet "Zertifikat geändert: <Name>" mit einer Schaltfläche Prüfen. Ein Zertifikat, dem Windows bereits vertraut, wird wie bisher angenommen und erscheint hier nie; nichts wird automatisch freigegeben.

Der eigene Fehlschlag des Treibers nennt den Grund statt eines namenlosen TLS-Fehlers: "Das Zertifikat dieser Anlage (die ersten 16 Zeichen des Fingerabdrucks) wartet unter Anlagenzugriff auf der Seite des Redfish-Treibers auf Ihre Freigabe. Das Lesen beginnt, sobald Sie es freigeben." Ein gesperrtes liest "…ist an dieser Station gesperrt. Prüfen Sie es unter Anlagenzugriff auf der Seite des Redfish-Treibers." Ein Zertifikat außerhalb seiner Gültigkeitsdaten, widerrufen oder mit gebrochener Signatur wird mit diesem Grund abgewiesen und nie aufgeführt, weil keine Freigabe es einwandfrei macht. Eine Gerätesuche auf dem BMC, über die Karte Suchbereich oder über Tags suchen auf der Seite des Geräts, trifft auf dieselben Entscheidungen: Ein unbekanntes Zertifikat beendet die Suche mit diesem Satz und wartet hier.

Die Entscheidungen liegen im Datenordner der Station unter ua\pki\redfish und überstehen einen Neustart. Die Befehle werden nur einer Rolle gezeichnet, die den Connector konfigurieren darf, und sie wirken nur im eigenen Fenster der Station: Ein Browser auf einem anderen Gerät liest die Karte, ohne sie zu ändern, und kein Werkzeug eines Agenten gibt ein Zertifikat frei (connector_browse meldet das wartende Gerät mit awaitingCertificate). Die Liste hält bis zu 100 Zertifikate, die auf Freigabe warten; ist sie voll, wird ein neues weiter abgewiesen, aber nicht aufgeführt, und die Karte sagt das.