Contenidor Docker per gestionar servidors HP mitjançant ILO

Potser us preguntareu: per què existeix Docker aquí? Quin és el problema d'iniciar sessió a la interfície web de l'OIT i configurar el servidor segons sigui necessari?
Això és el que vaig pensar quan em van donar un parell de servidors vells innecessaris que havia de reinstal·lar (el que s'anomena reprovisionament). El servidor en si es troba a l'estranger, l'únic disponible és la interfície web. Bé, en conseqüència, vaig haver d'anar a la consola virtual per executar algunes ordres. Allà va començar.
Com ja sabeu, Java s'utilitza normalment per a diversos tipus de consoles virtuals, ja sigui a HP o Dell. Almenys així era (i els sistemes són molt antics). Però Firefox i Chrome van deixar de donar suport a aquests applets fa molt de temps i el nou IcedTea no funciona amb aquests sistemes. Per tant, van sorgir diverses opcions:

1. Comença a construir un zoo a partir de navegadors i versions de Java a la teva màquina, aquesta opció ja no era necessària. No hi ha cap voluntat de burlar-se del sistema pel bé d'un parell d'ordres.
2. Llança una cosa bastant antiga a la màquina virtual (va resultar experimentalment que necessites Java 6) i configura tot el que necessites a través d'ella.
3. Igual que el punt 2, només en un contenidor, ja que diversos companys es van trobar amb el mateix problema i és molt més fàcil transferir-los un enllaç a un contenidor a Dockerhub que una imatge de màquina virtual, amb totes les contrasenyes, etc.
(De fet, només vaig arribar al punt 3 després de fer el punt 2)
Avui farem el punt 3.

M'he inspirat principalment en dos projectes:
1. docker-baseimage-gui
2. docker-firefox-java
Bàsicament el primer projecte docker-baseimage-gui ja conté utilitats i configuracions per executar aplicacions d'escriptori a Docker. Normalment necessiteu definir variables estàndard i la vostra aplicació serà accessible mitjançant el navegador (websocket) o VNC. En el nostre cas, llançarem mitjançant Firefox i VNC; no va funcionar mitjançant websocket.
Primer, instal·lem els paquets necessaris: Java 6 i 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

Ara tot el que heu de fer és anar a la pàgina de la interfície de l'OIT i introduir el vostre nom d'usuari i contrasenya. Inicieu Firefox amb l'inici automàtic:

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

La variable d'entorn HILO_HOST conté l'adreça web de la nostra interfície OIT, per exemple myhp.example.com
Per automatitzar l'inici de sessió, afegim l'autorització. L'inici de sessió a ILO es produeix amb una sol·licitud POST normal, com a resultat de la qual rebeu una clau de sessió JSON, que després passeu a una sol·licitud GET:
Calculem session_key mitjançant curl si les variables d'entorn HILO_USER i HILO_PASS estan definides:

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

Un cop hem gravat la clau de sessió a Docker, podem executar VNC:

exec x11vnc -forever -create

Ara simplement ens connectem mitjançant VNC al port 5900 (o qualsevol altre que escolliu) a localhost i anem a la consola virtual.
Tot el codi es troba al repositori docker-ilo-client.
Comandament complet per connectar-se a OIT:

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

on ADDRESS_OF_YOUR_HOST és el nom d'amfitrió de l'ILO, SOME_USERNAME és l'inici de sessió i, en conseqüència, SOME_PASSWORD la contrasenya per a ILO.
Després d'això, simplement inicieu qualsevol client VNC a l'adreça: vnc://localhost:5900
Les addicions i les sol·licituds d'extracció són, per descomptat, benvingudes.

Existeix un projecte similar per connectar-se a interfícies IDRAC de màquines DELL: docker-idrac6.

Font: www.habr.com

Afegeix comentari