Docker-Container zur Verwaltung von HP-Servern ĂŒber ILO

Vielleicht fragen Sie sich, wozu Docker hier nötig ist? Was ist das Problem, sich in die WeboberflÀche von ILO einzuloggen und den Server richtig zu konfigurieren?
So dachte ich auch, als mir ein paar alte, unnötige Server ĂŒbergeben wurden, die ich neu installieren musste (das, was reprovisioning genannt wird). Die Server befinden sich jenseits des Ozeans, das einzige, was verfĂŒgbar ist, ist die WeboberflĂ€che. Und ich musste folglich auf die virtuelle Konsole zugreifen, um einige Befehle auszufĂŒhren. Und hier begann es.
Wie bekannt ist, wird fĂŒr verschiedene Arten von virtuellen Konsolen normalerweise Java verwendet, sowohl bei HP als auch bei Dell. Jedenfalls war es frĂŒher so (und die Systeme sind sehr alt). Aber Firefox und Chrome unterstĂŒtzen diese Applets schon lange nicht mehr, und auch der neue IcedTea funktioniert mit diesen alten Systemen nicht. Daher standen ein paar Optionen zur Auswahl:

1. Ein Zoo aus Browsern und Java-Versionen auf meinem Rechner zusammenzustellen; diese Option fiel sofort weg. Ich habe kein Interesse, das System fĂŒr ein paar Befehle zu quĂ€len.
2. Auf einer virtuellen Maschine etwas ausreichend Altes zu starten (durch Versuch stellte sich heraus, dass Java 6 benötigt wird) und ĂŒber diese alle erforderlichen Einstellungen vorzunehmen.
3. Dasselbe wie Punkt 2, nur in einem Container, da mehrere Kollegen dasselbe Problem hatten und es viel einfacher ist, ihnen einen Link zum Container auf Docker Hub zu schicken als ein virtuelles Maschinen-Image mit allen Passwörtern usw.
(TatsÀchlich bin ich zu Punkt 3 erst gekommen, nachdem ich Punkt 2 erledigt hatte.)
Punkt 3 werden wir heute umsetzen.

Ich habe mich hauptsÀchlich von zwei Projekten inspirieren lassen:
1. docker-baseimage-gui
2. docker-firefox-java
Im Grunde enthĂ€lt das erste Projekt docker-baseimage-gui bereits Tools und Konfigurationen zum AusfĂŒhren von Desktop-Anwendungen in Docker. Normalerweise mĂŒssen Sie Standardvariablen festlegen, und Ihre Anwendung wird ĂŒber den Browser (Websocket) oder VNC verfĂŒgbar sein. In unserem Fall werden wir ĂŒber Firefox und VNC starten; ĂŒber Websocket hat es nicht funktioniert.
Zuerst installieren wir die benötigten 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 wir nur noch die ILO-WeboberflĂ€che aufrufen und unseren Benutzernamen und unser Passwort eingeben. Wir starten Firefox im Autostart:

FĂŒhre 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-OberflÀche, zum Beispiel myhp.example.com
Um den Login zu automatisieren, fĂŒgen wir jetzt die Authentifizierung hinzu. Der Login in ILO erfolgt ĂŒber einen normalen POST-Request, in dessen Ergebnis Sie einen JSON session_key erhalten, den Sie dann in einem GET-Request verwenden:
Berechnen Sie den session_key ĂŒber curl, wenn die Umgebungsvariablen HILO_USER und HILO_PASS gesetzt 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 den session_key im Docker gespeichert haben, können wir VNC starten:

exec x11vnc -forever -create

Jetzt verbinden wir uns einfach ĂŒber VNC zum Port 5900 (oder einem anderen Ihrer Wahl) auf localhost und betreten die virtuelle Konsole.
Der gesamte Code befindet sich im Repository docker-ilo-client.
Der vollstÀndige Befehl zum Verbinden mit ILO:

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

wobei ADDRESS_OF_YOUR_HOST der ILO-Host-Name, SOME_USERNAME der Benutzername und entsprechend SOME_PASSWORD das Passwort fĂŒr ILO ist.
Danach starten Sie einfach einen beliebigen VNC-Client an der Adresse: vnc://localhost:5900
ErgĂ€nzungen und Pull-Requests sind natĂŒrlich willkommen.

Ein Ă€hnliches Projekt existiert fĂŒr die Verbindung zu IDRAC-Schnittstellen DELL-Maschinen: docker-idrac6.

Quelle: habr.com

ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server đŸ”„ ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster