Contenedor Docker para xestionar servidores HP a través de ILO

Probablemente se estea preguntando: por que existe Docker aquí? Cal é o problema ao iniciar sesión na interface web da OIT e configurar o servidor segundo sexa necesario?
Iso é o que pensei cando me regalaron un par de servidores antigos innecesarios que precisaba reinstalar (o que se chama reprovisionamento). O servidor en si está situado no exterior, o único dispoñible é a interface web. Ben, en consecuencia, tiven que ir á Consola Virtual para executar algúns comandos. Aí foi onde comezou.
Como sabes, Java adoita usarse para varios tipos de consolas virtuais, xa sexa en HP ou Dell. Polo menos así era antes (e os sistemas son moi antigos). Pero Firefox e Chrome deixaron de admitir estes applets hai moito tempo e o novo IcedTea non funciona con estes sistemas. Polo tanto, xurdiron varias opcións:

1. Comeza a construír un zoolóxico a partir de navegadores e versións de Java na túa máquina, esta opción xa non era necesaria. Non hai ningún desexo de burlarse do sistema por mor dun par de comandos.
2. Lanza algo bastante antigo na máquina virtual (resultou experimentalmente que necesitas Java 6) e configura todo o que necesitas a través dela.
3. O mesmo que o punto 2, só nun contenedor, xa que varios compañeiros atoparon o mesmo problema e é moito máis fácil trasladarlles unha ligazón a un contenedor en Dockerhub que unha imaxe de máquina virtual, con todos os contrasinais, etc.
(De feito, só cheguei ao punto 3 despois de facer o punto 2)
Hoxe faremos o punto 3.

Inspiroume principalmente dous proxectos:
1. docker-baseimage-gui
2. docker-firefox-java
Basicamente o primeiro proxecto docker-baseimage-gui xa contén utilidades e configuracións para executar aplicacións de escritorio en Docker. Normalmente cómpre definir variables estándar e a súa aplicación será accesible a través do navegador (websocket) ou VNC. No noso caso, lanzarémolo a través de Firefox e VNC; non funcionou a través de websocket.
Primeiro, imos instalar os paquetes necesarios - Java 6 e 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

Agora só tes que ir á páxina da interface da OIT e introducir o teu nome de usuario e contrasinal. Inicia Firefox no inicio automático:

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

A variable de ambiente HILO_HOST contén o enderezo web da nosa interface ILO, por exemplo myhp.example.com
Para automatizar o inicio de sesión, agreguemos autorización. O inicio de sesión en ILO prodúcese cunha solicitude POST normal, polo que recibes unha clave de sesión JSON, que despois pasas nunha solicitude GET:
Calculemos session_key mediante curl se as variables de ambiente HILO_USER e HILO_PASS están definidas:

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

Unha vez que teñamos gravado a clave_sesión no docker, podemos executar VNC:

exec x11vnc -forever -create

Agora simplemente conectamos a través de VNC ao porto 5900 (ou calquera outro que elixas) en localhost e imos á consola virtual.
Todo o código está no repositorio docker-ilo-client.
Comando completo para conectarse 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

onde ADDRESS_OF_YOUR_HOST é o nome de host de ILO, SOME_USERNAME é o inicio de sesión e, en consecuencia, SOME_PASSWORD o contrasinal de ILO.
Despois diso, simplemente inicie calquera cliente VNC ao enderezo: vnc://localhost:5900
As adicións e as solicitudes de extracción son, por suposto, benvidas.

Existe un proxecto similar para conectarse ás interfaces IDRAC de máquinas DELL: docker-idrac6.

Fonte: www.habr.com

Engadir un comentario