Contenedor Docker para administrar servidores HP a través de la OIT

Tal vez se pregunte: ¿por qué está Docker aquí? ¿Cuál es el problema de acceder a la interfaz web de la OIT y configurar su servidor como debería?

Entonces pensé que cuando me dieron un par de viejos servidores innecesarios que tuve que reinstalar (lo que se llama reprovisión). El servidor en sí está ubicado al otro lado del océano, lo único que está disponible es la interfaz web. Bueno, en consecuencia, tuve que ir a la consola virtual para ejecutar algunos comandos. Aquí es donde comenzó.

Como saben, para varios tipos de consolas virtuales, generalmente se usa Java, que es en HP, que en Dell. En cualquier caso, era tan preciso antes (y los sistemas son muy antiguos). Pero Firefox y Chrome han dejado de admitir estos applets y el nuevo IcedTea no funciona con estos sistemas. Por lo tanto, se identificaron varias opciones:

  1. Para comenzar a construir un zoológico a partir de navegadores y versiones de Java en su máquina, esta opción desapareció de inmediato. No hay deseo de burlarse del sistema para un par de equipos.
  2. Ejecute algo bastante antiguo en la máquina virtual (se descubrió experimentalmente que se necesita Java 6) y configure todo lo que necesita a través de él.
  3. Lo mismo que el punto 2, solo en el contenedor, ya que varios colegas encontraron el mismo problema y es mucho más fácil pasarles un enlace al contenedor en dockerhub que una imagen de una máquina virtual, con todas las contraseñas, etc.

(En realidad, llegué al punto 3 solo después de llegar al punto 2)

Punto 3 lo haremos hoy.

Me inspiraron principalmente dos proyectos:

  1. docker-baseimage-gui
  2. docker-firefox-java

En principio, el primer proyecto docker-baseimage-gui ya contiene utilidades y configuraciones para iniciar aplicaciones de escritorio en docker. Por lo general, debe definir variables estándar y su aplicación será accesible a través de un navegador (websocket) o VNC. En nuestro caso, correremos a través de Firefox y VNC, a través de websocket no funcionó.

Primero, instale los 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 

Ahora queda ir a la página de interfaz de la OIT e ingresar su nombre de usuario y contraseña. Iniciamos Firefox en el 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 de la OIT, por ejemplo myhp.example.com .

Para automatizar la entrada, atornillemos la autorización. El inicio de sesión en la OIT se realiza mediante una solicitud POST normal, como resultado de lo cual se obtiene una clave de sesión JSON, que luego se pasa en una solicitud GET.

Calcule 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 

Después de grabar session_key en la ventana acoplable, podemos iniciar VNC:

 exec x11vnc -forever -create 

Ahora solo conéctese a través de VNC al puerto 5900 (o cualquier otro de su elección) en localhost y vaya a la consola virtual.

Todo el código está en el repositorio docker-ilo-client .

Comando completo para conectarse a la 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 

donde ADDRESS_OF_YOUR_HOST es el nombre de host de la OIT, SOME_USERNAME es el nombre de usuario y, en consecuencia, SOME_PASSWORD es la contraseña de la OIT.

Después de eso, simplemente inicie cualquier cliente VNC en la dirección: vnc://localhost:5900
Adiciones y solicitudes de extracción son bienvenidas, por supuesto.

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

Source: https://habr.com/ru/post/449080/


All Articles