Docker-Container zur Verwaltung von HP-Servern über ILO

Sie fragen sich vielleicht: Warum gibt es Docker hier? Was ist das Problem, wenn Sie sich bei der ILO-Weboberfläche anmelden und Ihren Server nach Bedarf einrichten?
Das dachte ich mir, als sie mir ein paar alte, unnötige Server gaben, die ich neu installieren musste (was als Neubereitstellung bezeichnet wird). Der Server selbst steht im Ausland, es steht nur das Webinterface zur Verfügung. Nun, dementsprechend musste ich zur virtuellen Konsole gehen, um einige Befehle auszuführen. Da fing es an.
Wie Sie wissen, wird Java normalerweise für verschiedene Arten von virtuellen Konsolen verwendet, sei es bei HP oder Dell. Zumindest war das früher so (und die Systeme sind sehr alt). Aber Firefox und Chrome unterstützen diese Applets schon vor langer Zeit nicht mehr und das neue IcedTea funktioniert mit diesen Systemen nicht mehr. Daher ergaben sich mehrere Optionen:

1. Beginnen Sie mit der Erstellung eines Zoos aus Browsern und Java-Versionen auf Ihrem Computer. Diese Option wurde nicht mehr benötigt. Es besteht kein Wunsch, sich wegen einiger Befehle über das System lustig zu machen.
2. Starten Sie etwas ganz Altes auf der virtuellen Maschine (experimentell stellte sich heraus, dass Sie Java 6 benötigen) und konfigurieren Sie alles, was Sie brauchen, darüber.
3. Dasselbe wie Punkt 2, nur in einem Container, da mehrere Kollegen auf das gleiche Problem gestoßen sind und es viel einfacher ist, ihnen einen Link zu einem Container auf Dockerhub zu übertragen, als ein virtuelles Maschinen-Image mit allen Passwörtern usw.
(Tatsächlich bin ich erst zu Punkt 3 gekommen, nachdem ich Punkt 2 erledigt hatte)
Punkt 3 erledigen wir heute.

Mich haben vor allem zwei Projekte inspiriert:
1. docker-baseimage-gui
2. Docker-Firefox-Java
Im Grunde das erste Projekt docker-baseimage-gui Enthält bereits Dienstprogramme und Konfigurationen zum Ausführen 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 über Firefox und VNC starten; über Websocket hat es nicht funktioniert.
Zuerst installieren wir die notwendigen 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 auf die ILO-Schnittstellenseite gehen und Ihren Benutzernamen und Ihr Passwort eingeben. Starten Sie 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 beispielsweise die Webadresse unserer ILO-Schnittstelle myhp.example.com
Um die Anmeldung zu automatisieren, fügen wir eine Autorisierung hinzu. Die Anmeldung bei ILO erfolgt mit einer regulären POST-Anfrage. Als Ergebnis erhalten Sie einen JSON-Sitzungsschlüssel, den Sie dann in einer GET-Anfrage übergeben:
Berechnen wir session_key über 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

Sobald wir den session_key im Docker aufgezeichnet haben, können wir VNC starten:

exec x11vnc -forever -create

Jetzt verbinden wir uns einfach per VNC mit Port 5900 (oder einem anderen Ihrer Wahl) auf localhost und gehen zur virtuellen Konsole.
Der gesamte Code befindet sich im Repository Docker-ilo-client.
Vollständiger Befehl zum Herstellen einer Verbindung 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

Dabei ist ADDRESS_OF_YOUR_HOST der ILO-Hostname, SOME_USERNAME der Login und dementsprechend SOME_PASSWORD das Passwort für ILO.
Starten Sie anschließend einfach einen beliebigen VNC-Client unter der Adresse: vnc://localhost:5900
Ergänzungen und Pull-Requests sind natürlich willkommen.

Für die Anbindung an IDRAC-Schnittstellen von DELL-Rechnern existiert ein ähnliches Projekt: docker-idrac6.

Source: habr.com

Kommentar hinzufügen