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

Probablemente se esté preguntando: ¿por qué existe Docker aquí? ¿Cuál es el problema al iniciar sesión en la interfaz web de la OIT y configurar su servidor según sea necesario?
Eso es lo que pensé cuando me dieron un par de servidores viejos e innecesarios que necesitaba reinstalar (lo que se llama reaprovisionamiento). El servidor en sí está ubicado en el extranjero, lo único disponible es la interfaz web. Bueno, en consecuencia, tuve que ir a la Consola Virtual para ejecutar algunos comandos. Ahí es donde empezó.
Como sabes, Java se suele utilizar para varios tipos de consolas virtuales, ya sea en HP o Dell. Al menos así era antes (y los sistemas son muy antiguos). Pero Firefox y Chrome dejaron de admitir estos subprogramas hace mucho tiempo y el nuevo IcedTea no funciona con estos sistemas. Por tanto, surgieron varias opciones:

1. Comience a construir un zoológico a partir de navegadores y versiones de Java en su máquina; esta opción ya no era necesaria. No hay ningún deseo de burlarse del sistema por un par de comandos.
2. Inicie algo bastante antiguo en la máquina virtual (experimentalmente resultó que necesita Java 6) y configure todo lo que necesita a través de él.
3. Lo mismo que el punto 2, solo que en un contenedor, ya que varios compañeros se encontraron con el mismo problema y es mucho más fácil pasarles un enlace a un contenedor en Dockerhub que una imagen de máquina virtual, con todas las contraseñas, etc.
(De hecho, sólo llegué al punto 3 después del punto 2)
Haremos el punto 3 hoy.

Me inspiré principalmente en dos proyectos:
1. Docker-baseimage-gui
2. ventana acoplable-firefox-java
Básicamente el primer proyecto. Docker-baseimage-gui ya contiene utilidades y configuraciones para ejecutar aplicaciones de escritorio en Docker. Por lo general, necesita definir variables estándar y se podrá acceder a su aplicación a través del navegador (websocket) o VNC. En nuestro caso, iniciaremos a través de Firefox y VNC; no funcionó a través de websocket.
Primero, instalemos los paquetes necesarios: Java 6 y 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

Ahora todo lo que tiene que hacer es ir a la página de la interfaz de la OIT e ingresar su nombre de usuario y contraseña. Inicie Firefox en inicio automático:

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

La variable de entorno HILO_HOST contiene la dirección web de nuestra interfaz ILO, por ejemplo mihp.ejemplo.com
Para automatizar el inicio de sesión, agreguemos autorización. El inicio de sesión en ILO se produce con una solicitud POST normal, como resultado de lo cual recibe una clave de sesión JSON, que luego pasa en una solicitud GET:
Calculemos session_key mediante curl si las variables de entorno HILO_USER y 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

Una vez que hayamos registrado la clave de sesión en la ventana acoplable, podemos ejecutar VNC:

exec x11vnc -forever -create

Ahora simplemente nos conectamos vía VNC al puerto 5900 (o cualquier otro de nuestra elección) en localhost y vamos a la consola virtual.
Todo el código está en el repositorio. cliente-docker-ilo.
Comando completo para conectarse a 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

donde ADDRESS_OF_YOUR_HOST es el nombre de host de ILO, ALGÚN_NOMBRE DE USUARIO es el inicio de sesión y, en consecuencia, ALGUNA_CONTRASEÑA la contraseña de ILO.
Después de eso, simplemente inicie cualquier cliente VNC en la dirección: vnc://localhost:5900
Por supuesto, las adiciones y solicitudes de extracción son bienvenidas.

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

Fuente: habr.com

Añadir un comentario