Docker-Container zur Verwaltung von HP Servern über ILO

Sie fragen sich vielleicht - warum ist Docker hier? Was ist das Problem, wenn Sie zur ILO-Weboberfläche gehen und Ihren Server so einrichten, wie er sollte?

Also dachte ich, als sie mir ein paar alte unnötige Server gaben, die ich neu installieren musste (was als Reprovision bezeichnet wird). Der Server selbst befindet sich auf der anderen Seite des Ozeans. Das einzige, was verfügbar ist, ist das Webinterface. Nun, dementsprechend musste ich in die virtuelle Konsole gehen, um einige Befehle auszuführen. Hier hat es angefangen.

Wie Sie wissen, wird für verschiedene Arten von virtuellen Konsolen normalerweise Java verwendet, und zwar bei HP und bei Dell. In jedem Fall war es früher so genau (und die Systeme sind sehr alt). Firefox und Chrome unterstützen diese Applets jedoch seit langem nicht mehr, und das neue IcedTea funktioniert mit diesen Systemen nicht. Daher wurden mehrere Optionen identifiziert:

  1. Um einen Zoo aus Browsern und Java-Versionen auf Ihrem Computer zu erstellen, wurde diese Option sofort ausgeblendet. Es besteht keine Lust, das System für ein paar Teams zu verspotten.
  2. Führen Sie etwas ziemlich Altes auf der virtuellen Maschine aus (es wurde experimentell herausgefunden, dass Java 6 benötigt wird) und konfigurieren Sie alles, was Sie benötigen.
  3. Das Gleiche wie Punkt 2, nur im Container, da mehrere Kollegen auf dasselbe Problem gestoßen sind und es viel einfacher ist, ihnen einen Link zum Container auf Dockerhub zu übergeben, als ein Image einer virtuellen Maschine mit allen Passwörtern usw.

(Eigentlich habe ich Punkt 3 erst erreicht, nachdem ich Punkt 2 gemacht habe)

Punkt 3 werden wir heute tun.

Ich wurde hauptsächlich von zwei Projekten inspiriert:

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

Im Prinzip enthält das erste Docker-Baseimage-GUI- Projekt bereits Dienstprogramme und Konfigurationen zum Starten von Desktop-Anwendungen in Docker. Normalerweise müssen Sie Standardvariablen definieren, und auf Ihre Anwendung kann über einen Browser (Websocket) oder VNC zugegriffen werden. In unserem Fall werden wir Firefox und VNC durchlaufen, über den Websocket hat es nicht funktioniert.

Installieren Sie 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 

Jetzt müssen Sie nur noch zur ILO-Schnittstellenseite gehen und Ihren Benutzernamen und Ihr Passwort eingeben. Wir starten Firefox im Autostart:

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

Die Umgebungsvariable HILO_HOST enthält die Webadresse unserer ILO-Schnittstelle, z. B. myhp.example.com .

Um die Eingabe zu automatisieren, schrauben wir die Autorisierung. Die Anmeldung bei ILO erfolgt durch eine reguläre POST-Anforderung, wodurch Sie einen JSON-Sitzungsschlüssel erhalten, den Sie dann in einer GET-Anforderung übergeben.

Berechnen Sie session_key via curl, 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 im Docker aufgezeichnet haben, können wir VNC starten:

 exec x11vnc -forever -create 

Stellen Sie jetzt einfach über VNC eine Verbindung zu Port 5900 (oder einem anderen Ihrer Wahl) auf localhost her und rufen Sie die virtuelle Konsole auf.

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

Vollständiger Befehl zum Herstellen einer Verbindung zur IAO:

 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 ILO-Hostname, SOME_USERNAME der Benutzername und SOME_PASSWORD das ILO-Kennwort.

Starten Sie danach einfach einen beliebigen VNC-Client unter der Adresse: vnc://localhost:5900
Ergänzungen und Pull-Anfragen sind natürlich willkommen.

Ein ähnliches Projekt existiert für die Verbindung mit IDRAC-Schnittstellen von DELL-Maschinen: docker-idrac6 .

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


All Articles