Frage Wie kann ich Hunderte von IPMI BMCs verwalten?


Ich habe über 200 Computer, die liefern können IPMI Dienstleistungen. Die Server werden von verschiedenen Firmen hergestellt (SuperMicro, Dell, etc.), und es gibt 6-7 BMC-Modelle von etwa 5 verschiedenen Herstellern, und jedes Modell hat seine eigenen Eigenheiten.

Bisher haben wir die BMCs mit einer Kombination aus DHCP konfiguriert und jeden BMC manuell konfiguriert. Die manuelle Konfiguration kann unter Verwendung einer bootfähigen CD-ROM, einer Konfiguration aus dem BIOS (falls unterstützt) von dem Host-Betriebssystem mit einem Dienstprogramm wie ipmitool, freepipmiusw. oder remote mit ipmitool, wenn wir die Netzwerkadresse des Geräts ermitteln können.

Diese manuelle Konfiguration ist jedoch ziemlich mühsam. In einigen Fällen möchten wir eine Einstellung global auf allen BMCs ändern, was erfordert, dass ein Administrator einen Befehl gegen Dutzende von Boxen ausführt. Da die BMCs von verschiedenen Herstellern bereitgestellt werden und jedes Modell von BMC möglicherweise eigene Eigenheiten aufweist, funktioniert derselbe Befehl nicht immer bei allen BMCs.

Gibt es irgendwelche Dienstprogramme, die es mir erlauben, die BMCs auf Dutzenden von Kisten zu konfigurieren? Angenommen, ich möchte einen Parameter in Dutzenden von verschiedenen BMCs abfragen oder das Passwort ändern, den HTTP - Zugriff auf die WebUI deaktivieren oder die berüchtigte Chiffre Null Sicherheitsloch.

Bonuspunkte für jedes Dienstprogramm, das es mir erlauben würde, die BMC-Firmware zu aktualisieren, die zur Minderung erforderlich ist mehrere Sicherheitslücken


30
2017-08-07 18:28


Ursprung


Dies scheint etwas, was Sie tun könnten, wenn Sie Puppet / Mcollective. Sie verwenden Faktor, möglicherweise mit einigen benutzerdefinierten Fakten zu erkennen, welche Art von Gerät Sie haben, dann konfigurieren Sie Dinge mit Marionette oder durch Drücken von Befehlen mit Mcollective. - Zoredache
Vielleicht möchten Sie auch einen Blick darauf werfen xcat. Es ist nicht so ausgeklügelt wie Puppet, wenn es um Konfigurationsmanagement geht. Put hat eine verteilte Shell integriert, die auf Gruppen operieren kann und eng in IPMI integriert ist. - Isaac
Puppet Razor kann auch eine Lösung sein, obwohl ich noch nicht nachgeschaut habe: vdatacloud.com/blogs/2012/05/23/... - Stefan Lasiewski
Ich bin bei Puppetconf und habe gerade mit dem Projektleiter von Mcollective (Sonst bekannt als Puppet Enterprise Orchestration) gesprochen. Von Mcollective verwaltet Ihre Knoten (auf der Betriebssystemebene), dann auf der IPMI-Ebene zu arbeiten scheint ziemlich weit außerhalb wofür Mcollective entwickelt wurde. Aber es ist wahrscheinlich möglich. - Stefan Lasiewski


Antworten:


Ich würde wahrscheinlich verwenden Ansible. Es ist eine sehr einfache Konfigurationsmanagement- / Orchestrierungs-Engine, die viel einfacher zu starten ist als Puppet (Puppet war dafür meine erste Wahl, aber nicht immer jetzt, nachdem ich Ansible entdeckt hatte).

Der Vorteil von Ansible besteht darin, dass es direkt über SSH kommuniziert, so dass Sie in der Lage sind, nur Ihre vorhandenen SSH-Anmeldeinformationen und den Workflow zu verwenden.

Wenn Sie derzeit Ihre BMCs mit ipmitool konfigurieren, können Sie Folgendes tun:

Definieren Sie eine Hosts-Datei - Dies teilt Ansible mit, welche Hosts in der BMC Gruppe (in diesem Fall), und was zu tun, auf.

[bmc]
192.168.1.100
192.168.1.101
192.168.1.102

Und so weiter ... Sie können auch Hostnamen in dieser Datei verwenden, solange sie auflösbar sind.

Erstellen Sie anschließend ein "Playbook", dh die Menge der Befehle, die auf jedem Host in einer Host-Gruppe ausgeführt werden. Sie möchten diese Art von Top-Down-Verzeichnislayout haben:

ansible/
   playbooks/
      bmc.yml
      roles/
        bmcconfig/
           files/
           handlers/
             main.yml
           tasks/
             main.yml
           templates/
   group_vars/
      all

Ein Playbook hat RollenDies sind kleine Konfigurationsabschnitte, die Sie aufteilen und wiederverwenden können.

Also würde ich eine Datei namens erstellen bmc.yml (Alle Ansible-Konfiguration ist in YAML-Dateien)

---
- name: Configure BMC on the hosts
  hosts: bmc
  user: root
  roles: 
    - bmcconfig

Dann drinnen roles/bmcconfig/tasks/main.yml Sie können die Befehle starten, die auf jedem Host ausgeführt werden sollen, um mit ipmi zu kommunizieren.

---
  - name: Install ipmitool
    apt: pkg=ipmitool state=installed
  - name: Run ipmitool config
    shell: ipmitool -your -options -go -here

Wenn Sie das Playbook ausführen, mit ansible-playbook -i hosts bmc.yml die Befehle aufgelistet in tasks/main.yml für jede Rolle wird in Top-Down-Reihenfolge auf jedem Host in der gefunden bmc Gastgebergruppe in hosts

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.

also könntest du so etwas definieren

ipmitool_password: $512315Adb

in deiner group_vars/all und als Ergebnis könnten Sie etwas haben wie:

shell: ipmitool -your -options -go -here --password=${ipmitool_password}

im Spielbuch.

Sie können viel mehr Informationen über die Verwendung der "Module" herausfinden - die Komponenten von Ansible, mit denen Sie Dinge tun können, wie Sie Ihre eigenen schreiben: D, und so weiter Ansible Dokumentation Seiten.


16
2017-08-08 08:29





Ich habe ein kleines Python-Tool geschrieben, um Befehle auf unseren 1000 Maschinen auszuführen (und ihre BMCs, Dracs, Ilo's und Imms).

Was ich getan habe, war ein Python-Framework namens vsc-verwalten Hier kann ich Befehle ausführen, die entweder an den Server oder an die BMC gesendet werden, und dann konfigurieren, welcher Maschinentyp welchen Befehl benötigt.

Ich habe mehrere Klassen, die eine Mischung dieser Befehle kombinieren,

Also für Maschinen mit einem imm es wird ssh zu der imm, und rennen power off (in einer Art Erwartungsschrift)

Für unser Imb Blade-GehäuseEs wird dies auf dem Chassis laufen

power -%(command)s -T system:blade[%(blade)s]

Für einige dell dracs Es wird dies auf dem OS (eines Master-Knoten) ausgeführt

idracadm -r %(hostname)s -u root -p '%(password)s' serveraction %(command)s

Für unsere neueren HP-Systeme, die das tun ipmi (und ich sehe mehr und mehr in diesen Tagen) es wird dies auf dem Meister laufen:

ipmitool -I lanplus -H %(hostname)s -U %(user)s -P '%(password)s' chassis power %(command)s

oder neuere Dell-Systeme benötigen ipmitool -I openMöglicherweise müssen Sie mit dem Protokoll ein wenig spielen.

Für Einstellungen, die nicht im ipmi - Standard enthalten sind, habe ich einige Dinge aus dem DMTF SMASH CLP, z.B. Einschalten der Locator-LED:

start /system1/led1

All dies in einem Befehlszeilentool, das von unseren Laptops aus ausgeführt werden kann und sich mit dem richtigen Master - Knoten verbindet, führt den richtigen Befehl für den rechten Knoten aus und gibt die Ausgabe mit einer zusätzlichen Liste von Fehlern zurück (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 Klasse von Hardware ist jetzt relativ einfach (Dank der Tatsache, dass die meisten Hersteller ipmi und DMTFSMASHCLP jetzt vollständig unterstützen)

Dies ist für die anfängliche Konfiguration nicht geeignet (es benötigt die bmc, um eine eindeutige IP und ein korrektes Gateway zu haben, aber das ist es, was unsere Lieferanten bei der Lieferung liefern müssen), aber sie können es tun fast alles andere (führen Sie auch beliebige Befehle auf dem Host - Betriebssystem aus, und planen Sie automatisch Ausfallzeiten in Icinga / Nagios wenn Sie einen Knoten neu starten und / oder 1000 Hosts und Dienste gleichzeitig in icinga / nagios bestätigen)

Das Aktualisieren der BMC-Firmware und das Hinzufügen von Unterstützung für unsere Switches sind noch ausstehende Probleme, die geplant sind.

AKTUALISIEREN

Da zumindest einige Leute interessiert zu sein schienen, habe ich heute einen letzten Schliff gegeben, und habe dies bei https://github.com/hpcugent/vsc-manage

Dies ist zwar sehr auf unseren eigenen Workflow (quator und / oder pbs) ausgerichtet, aber ich hoffe, dass es zumindest interessant sein kann.


12
2017-08-09 10:47



Danke dafür! Gibt es einen Vorteil, den Ihre Arbeit gegenüber etablierten Lösungen wie Ansible hat? - MikeyB
Ich hatte noch nie zuvor von Ansible gehört, werde mich definitiv darum kümmern. - Jens Timmerman
Soweit ich es sehe, hat Ansible keine Unterstützung für IMPI und DMTF SMASH noch. - Jens Timmerman
Es ist interessant, Jens. Vielen Dank für das Teilen dieses Projekts. Ansible + vsc-manage scheint wirklich nützlich zu sein, wenn es darum geht, Server in Massen zu verwalten. - ILIV
ILIV, ich denke, es wäre schön, wenn ich etwas Zeit hätte, alle Features von vsc-manage zu ansible hinzuzufügen ;-) - Jens Timmerman


Ich bin überrascht, dass niemand MAAS erwähnt (http://maas.io/), die genau das tut, wonach Sie suchen. Es kann BMCs automatisch konfigurieren und verwalten und darüber hinaus ein beliebiges Betriebssystem auf den Knoten bereitstellen, die Sie in das System aufgenommen haben. Es verfügt über eine Web-Benutzerschnittstelle und eine REST-konforme API und wurde für die Integration in jedes Automatisierungssystem entwickelt.

Wenn ein Computer zum ersten Mal mit PXE gestartet wird, verwendet MAAS In-Band IPMI, um die Anmeldedaten automatisch für Sie einzurichten. Ab diesem Zeitpunkt können Sie einen Computer einfach per Fernzugriff starten und herunterfahren.

Für weitere Details, überprüfen Sie die MAAS BMC Power Types Dokumentation Dies zeigt, wie ein BMC für jeden in MAAS eingetragenen Knoten manuell konfiguriert wird.


3
2017-09-07 15:02



Ein guter Tipp, danke. Sieht ziemlich cool aus. Ubuntus MAAS scheint ein paar nützliche Provisioning-, Lifecycle-Management-Funktionen zu bieten und sieht so aus, als ob es einige nützliche IPMI-Management-Tools hätte. Wir benutzen The Foreman bereits, was schon einiges bewirkt. Das IPMI-Management von The Foreman ist jedoch ziemlich schwach und es bietet keine Gruppierung oder Organisationsstruktur, aber es hat zumindest etwas. Wir verwenden es in Kombination mit einer Handvoll anderer Tools, um das gesamte Kit und die Software zu verwalten. - Stefan Lasiewski
Beachten Sie, dass Foreman über Organisationen und Standorte verfügt (siehe projekte.theforeman.org/projects/foreman/wiki/...) Unterstützung ab v1.1. Sie können diese Features (zusammen mit Hostgroups) verwenden, um relativ granulare (sogar hierarchische mit Parameter- oder Schlüssel / Wert-Paar-Unterstützung) Auflistungen von Hosts bereitzustellen. - mxmader