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.
2.
Im Grunde enthält das erste Projekt 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
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 .
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: .
Quelle: habr.com
