Docker-Container für die Verwaltung von HP Servern mit ILO

Herkunft in russischer Sprache

Nun, Sie können sich fragen - warum sollte ich Docker-Container für einen solchen Zweck verwenden? Was ist das Problem, um die Weboberfläche der IAO aufzurufen und den Server wie gewohnt zu verwalten?

Der gleiche Gedanke, den ich hatte, als ich ein paar alte Server hatte, die eine erneute Bereitstellung erforderten. Die Server befinden sich auf verschiedenen Kontinenten und die einzige Schnittstelle, die ich hatte, war nur eine Webschnittstelle der IAO. Und als ich einige manuelle Befehle über die virtuelle Konsole eingeben musste, stellte ich fest, dass dies kaum möglich ist.

Für verschiedene Arten von virtuellen Konsolen von Servern (sowohl HP als auch Dells) werden normalerweise Java-Webanwendungen verwendet. Aber Firefox und Chrome unterstützen sie nicht mehr und das neueste IcedTea funktioniert sowieso nicht mit diesen alten Systemen. Ich hatte also ein paar Möglichkeiten:

  1. So installieren Sie parallel alte Versionen von Browsern und Java und versuchen, eine erforderliche Kombination auf meinem System zu finden. Diese Option wurde herausgefiltert, da ich mein System nicht nur wegen weniger Konsolenbefehle verschmutzen möchte.
  2. Erstellen Sie eine virtuelle Maschine mit alten Systemen, installieren Sie dort Java 6 und verwenden Sie die virtuelle Konsole wie zuvor.
  3. Das gleiche wie in Punkt 2, jedoch mit Container, keine virtuelle Maschine. Da einige meiner Kollegen das gleiche Problem haben, würde ich ihnen lieber einen Bash-Befehl zum Ausführen der virtuellen Konsole übergeben, anstatt die Festplatte der virtuellen Maschine, Kennwörter dafür usw. usw. freizugeben.

(Um ehrlich zu sein, Punkt 3 habe ich erst nach Punkt 2 gemacht).
Punkt 3 werden wir heute umsetzen.

Diese beiden Projekte haben mich hauptsächlich inspiriert:

  1. Docker-Basisbild-GUI
  2. Docker-Firefox-Java

Tatsächlich enthält das erste Projekt docker-baseimage-gui bereits alle erforderlichen Konfigurationen und Tools, um Desktop-Apps im Browser innerhalb eines Containers zu starten. Normalerweise definieren Sie bestimmte Umgebungsvariablen und Ihre App wird über einen Browser (Websocket) oder VNC zugänglich. In unserem Fall beginnen wir mit Firefox und VNC, der Websocket hat nicht gut funktioniert.

Installieren wir zunächst die erforderlichen Pakete: Java 6 und IcedTea:

RUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.list && \ apt-get update && \ apt-get -y upgrade && \ apt-get -y install firefox \ nano curl \ icedtea-6-plugin \ icedtea-netx \ openjdk-6-jre \ openjdk-6-jre-headless \ tzdata-java 

Öffnen wir nun die Webseite der ILO-Oberfläche in Firefox und geben dort die Anmeldeinformationen ein. Starten Sie Firefox:

 RUN bash -c 'echo "exec openbox-session &" >> ~/.xinitrc' && \ bash -c 'echo "firefox \${HILO_HOST}">> ~/.xinitrc' && \ bash -c 'chmod 755 ~/.xinitrc' 

Die Variable HILO_HOST ist die URL unserer ILO-Schnittstelle, z. B. https://myhp.example.com .

Zur Automatisierung fügen wir die Authentifizierung hinzu. Die ILO-Anmeldung wird über eine einfache POST-Anforderung ausgeführt. Als Antwort erhalten Sie den Wert session_key und übergeben diesen Wert in der GET-Anforderung. Lassen Sie uns session_key mit curl ermitteln, wenn die Umgebungsvariablen HILO_USER und HILO_PASS definiert sind:

 export HOME=/config export HILO_HOST=${HILO_HOST%%/} SESSION_KEY="" data="{\"method\":\"login\",\"user_login\":\"${HILO_USER}\",\"password\":\"${HILO_PASS}\"}" if [[ -n "${HILO_USER}" && -n "${HILO_PASS}" ]]; then SESSION_KEY=$(curl -k -X POST "${HILO_HOST}/json/login_session" -d "$data" 2>/dev/null | grep -Eo '"session_key":"[^"]+' | sed 's/"session_key":"//') fi echo "SESSION_KEY=$SESSION_KEY" echo $SESSION_KEY > /session_key 

Nachdem wir session_key in Container geschrieben haben, können wir den VNC-Server starten:

 exec x11vnc -forever -create 

Stellen Sie jetzt einfach eine Verbindung mit dem VNC-Client zu Port 5900 (oder dem, was Sie in Ihrer Auswahl definiert haben) zu localhost her und rufen Sie die virtuelle Konsole des HP Servers auf.

Der Code befindet sich im Git-Repository Docker-Ilo-Client .

Vollständiger einzeiliger Befehl zum Herstellen einer Verbindung zur virtuellen ILO-Konsole:

 docker run -d --rm --name ilo-client -p 5900:5900 -e HILO_HOST=https://ADDRESS_OF_YOUR_HOST -e HILO_USER=SOME_USERNAME -e HILO_PASS=SOME_PASSWORD sshnaidm/docker-ilo-client 

Dabei ist ADDRESS_OF_YOUR_HOST der Hostname von ILO, SOME_USERNAME ist Login und SOME_PASSWORD ist das Passwort für ILO.

Als nächstes gehen Sie einfach mit einem beliebigen VNC-Client zur Adresse vnc://localhost:5900 .
Pull-Anfragen und Kommentare sind mehr als willkommen.

Das ähnliche Projekt für die Verbindung mit Dell IDRAC-Servern ist hier: docker-idrac6 .

Source: https://habr.com/ru/post/de452516/


All Articles