Ich habe über 200 Computer, die IPMI- Dienste bereitstellen können . Die Server werden von verschiedenen Firmen (SuperMicro, Dell usw.) hergestellt. Es gibt 6-7 BMC-Modelle von etwa 5 verschiedenen Herstellern, und jedes Modell weist seine eigenen Besonderheiten auf.
Bisher haben wir die BMCs mithilfe einer Kombination aus DHCP und manueller Konfiguration der einzelnen BMCs konfiguriert. Die manuelle Konfiguration kann mithilfe einer bootfähigen CD-ROM, einer BIOS-Konfiguration (sofern unterstützt), eines Host-Betriebssystems mit einem Dienstprogramm wie ipmitool , freeipmi usw. oder einer Remote-Verwendung von ipmitool erfolgen, wenn wir die Netzwerkadresse des ermitteln können Gerät.
Diese manuelle Konfiguration ist jedoch ziemlich mühsam. In einigen Fällen möchten wir eine Einstellung global auf allen BMCs ändern, sodass ein Administrator einen Befehl für Dutzende von Boxen ausführen muss. Da die BMCs von verschiedenen Anbietern bereitgestellt werden und jedes BMC-Modell möglicherweise eigene Besonderheiten aufweist, funktioniert derselbe Befehl nicht immer auf allen BMCs.
Gibt es Dienstprogramme, mit denen ich die BMCs auf Dutzenden von Boxen massenkonfigurieren kann? Angenommen, ich möchte einen Parameter für Dutzende verschiedener BMCs abfragen oder das Kennwort ändern, den HTTP-Zugriff auf die WebUI deaktivieren oder die berüchtigte Sicherheitslücke für Chiffre Null deaktivieren .
Bonuspunkte für jedes Dienstprogramm, mit dem ich die BMC-Firmware aktualisieren kann. Dies ist erforderlich, um mehrere Sicherheitslücken zu schließen
quelle
Antworten:
Ich würde wahrscheinlich Ansible verwenden . Es ist eine sehr einfache Konfigurationsmanagement- / Orchestrierungs-Engine, mit der man viel einfacher anfangen kann als mit Puppet (Puppet war früher meine erste Wahl, aber nicht immer jetzt, nachdem ich Ansible entdeckt habe).
Der Vorteil von Ansible besteht darin, dass es direkt über SSH kommuniziert, sodass Sie nur Ihre vorhandenen SSH-Anmeldeinformationen und Ihren Workflow verwenden können.
Wenn Sie derzeit Ihre BMCs mit ipmitool konfigurieren, können Sie Folgendes tun:
Define a Hosts file (Hosts-Datei definieren) - Hiermit wird Ansible mitgeteilt, welche Hosts (in diesem Fall) der BMC- Gruppe angehören und auf welchen Hosts etwas ausgeführt werden soll .
Und so weiter ... Sie können in dieser Datei auch Hostnamen verwenden, sofern diese auflösbar sind.
Erstellen Sie dann ein "Playbook", das die Befehle darstellt, die auf jedem Host in einer Hostgruppe ausgeführt werden sollen. Sie möchten diese Art von Top-Down-Verzeichnislayout haben:
Ein Playbook enthält Rollen , kleine Konfigurationsabschnitte, die Sie zerlegen und wiederverwenden können.
Also würde ich eine Datei namens erstellen
bmc.yml
(Alle Ansible-Konfiguration ist in YAML-Dateien)Anschließend
roles/bmcconfig/tasks/main.yml
können Sie die Befehle auflisten, die auf jedem Host ausgeführt werden sollen, um mit ipmi zu kommunizieren.Wenn Sie das Playbook
ansible-playbook -i hosts bmc.yml
ausführen, werden die intasks/main.yml
für jede Rolle aufgelisteten Befehle in der Reihenfolge von oben nach unten auf jedem Host ausgeführt, der sich in derbmc
Hostgruppe in befindethosts
group_vars/all
ist eine interessante Datei, mit der Sie Schlüssel-Wert-Paare von Variablen und Werten definieren können, die in Ihren Playbooks verwendet werden können.so könnte man sowas definieren
In Ihrem
group_vars/all
und als Ergebnis könnten Sie Folgendes haben:im Spielbuch.
Sie können viel mehr Informationen erfahren, wie die „Module“ zu verwenden - die Komponenten von ansible die Sie erlaubt , Dinge zu tun, wie Sie Ihre eigenen schreiben: D, und so weiter an den ansible Dokumentationsseite .
quelle
Ich habe ein kleines Python-Tool geschrieben, um Befehle auf unseren 1000 Maschinen auszuführen (und deren BMCs, Dracs, Ilos und Imms).
Ich habe ein Python-Framework namens vsc-manage geschrieben, in dem ich Befehle ausführen kann, die entweder an den Server oder an die BMC gesendet werden, und dann konfiguriere, welcher Maschinentyp welchen Befehl benötigt.
Ich habe mehrere Klassen, die eine Mischung dieser Befehle kombinieren,
Also für Maschinen mit einer imm wird es zur imm ssh und laufen
power off
(in einer Art Expect-Skript)Für unsere Imb Blade Chassis läuft dies auf dem Chassis
Für einige Dell Dracs wird dies auf dem Betriebssystem (eines Masterknotens) ausgeführt.
Für unsere neueren HP-Systeme, die ipmi unterstützen (und ich sehe heutzutage immer mehr), wird dies auf dem Master ausgeführt:
Wenn neuere Dell-Systeme benötigt werden
ipmitool -I open
, müssen Sie möglicherweise ein wenig mit dem Protokoll spielen.Für Einstellungen, die nicht im ipmi-Standard enthalten sind, habe ich einige Dinge aus dem DMTF SMASH CLP implementiert , z. B. das Einschalten der Locator- LED :
All dies in einem Befehlszeilentool, das von unseren Laptops ausgeführt werden kann, das eine Verbindung zum richtigen Masterknoten herstellt, den richtigen Befehl für den richtigen Knoten ausführt und die Ausgabe mit einer zusätzlichen Liste von Fehlern zurückgibt, sofern vorhanden (basierend auf Ausgabe auf stderr und / oder exitcode)
Dies hat sich als sehr praktisch erwiesen, und das Hinzufügen von Unterstützung für eine neue Hardwareklasse ist jetzt relativ einfach (da die meisten Anbieter jetzt ipmi und DMTFSMASHCLP vollständig unterstützen).
Dies ist nicht für die Erstkonfiguration geeignet (das BMC muss über eine eindeutige IP-Adresse und ein korrektes Gateway verfügen, aber dies ist das, was uns unsere Lieferanten im Auslieferungszustand liefern müssen), kann aber fast alles andere (auch beliebige Befehle auf dem Host ausführen) System und automatisches Planen von Ausfallzeiten in Icinga / Nagios beim Neustart eines Knotens und / oder gleichzeitiges Bestätigen von 1000 Hosts und Diensten in Icinga / Nagios.
Das Aktualisieren der Firmware von bmc und das Hinzufügen von Support für unsere Switches sind noch ausstehende Probleme, die geplant sind.
AKTUALISIEREN
Da zumindest einige Leute anscheinend interessiert waren, habe ich es heute noch ein letztes Mal poliert und dies unter https://github.com/hpcugent/vsc-manage veröffentlicht
Obwohl dies sehr stark auf unseren eigenen Workflow (quattor und / oder pbs) abzielt, hoffe ich, dass es zumindest interessant sein kann.
quelle
Ich bin überrascht, dass niemand MAAS ( http://maas.io/ ) erwähnt hat, das genau das tut, wonach Sie suchen. Es kann BMCs automatisch konfigurieren und verwalten und darüber hinaus jedes Betriebssystem auf den Knoten bereitstellen, die Sie in das System aufgenommen haben. Es verfügt über eine Web-Benutzeroberfläche und eine RESTful-API und kann in jedes Automatisierungssystem integriert werden.
Wenn eine Maschine PXE zum ersten Mal startet, verwendet MAAS In-Band-IPMI, um Anmeldeinformationen automatisch für Sie einzurichten. Ab diesem Zeitpunkt können Sie eine Maschine einfach aus der Ferne starten und herunterfahren.
Weitere Informationen finden Sie in der Dokumentation zu MAAS BMC Power Types , in der beschrieben wird, wie Sie einen BMC für einen in MAAS eingetragenen Knoten manuell konfigurieren.
quelle