Contenedor Docker para la gestión de servidores HP con OIT

Origen en ruso

Bueno, puedes preguntarte: ¿por qué usaría el contenedor docker para tal propósito? ¿Cuál es el problema para ingresar a la interfaz web de la OIT y administrar el servidor como de costumbre?

El mismo pensamiento que tuve cuando obtuve algunos servidores antiguos que requerían una nueva revisión. Los servidores están ubicados en diferentes continentes y la única interfaz que tenía era solo una interfaz web de la OIT. Y cuando tuve que ingresar algunos comandos manuales a través de la consola virtual, descubrí que es casi imposible.

Para varios tipos de consola virtual de servidores (tanto HP como Dell), generalmente se utilizan applets web Java. Pero Firefox y Chrome ya no los admiten y, de todos modos, el IcedTea más nuevo no funciona con ese sistema antiguo. Entonces tenía algunas opciones:

  1. Instalar en paralelo versiones antiguas de navegadores y Java, tratando de encontrar una combinación requerida, en mi sistema. Esta opción se filtró, ya que no quiero contaminar mi sistema solo por los pocos comandos de la consola.
  2. Cree una máquina virtual con sistemas antiguos, instale allí Java 6 y use la Consola virtual como antes.
  3. Lo mismo que en el punto 2, pero con contenedor, no una máquina virtual. Dado que algunos de mis colegas tuvieron el mismo problema, preferiría pasarles un comando bash para ejecutar la consola virtual en lugar de compartir el disco de la máquina virtual, las contraseñas, etc.

(Para ser sincero, el punto 3 lo hice solo después del punto 2).
El punto 3 es lo que vamos a implementar hoy.

Me han inspirado principalmente estos dos proyectos:

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

En realidad, el primer proyecto docker-baseimage-gui ya contiene todas las configuraciones y herramientas necesarias para iniciar aplicaciones de escritorio en el navegador dentro de un contenedor. Por lo general, define variables de entorno específicas y su aplicación será accesible a través del navegador (websocket) o VNC. En nuestro caso comenzamos con Firefox y VNC, websocket no funcionó bien.

En primer lugar, instalemos 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 abramos la página web de la interfaz de la OIT en Firefox e ingrese las credenciales allí. Inicie Firefox:

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

La variable HILO_HOST es la URL de nuestra interfaz de la OIT, por ejemplo https://myhp.example.com .

Para la automatización agreguemos autenticación. El inicio de sesión de la OIT se ejecuta a través de una simple solicitud POST, en respuesta obtiene el valor session_key y luego pasa este valor en la solicitud GET Descubramos session_key con 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 que escribimos session_key en contenedores, podemos iniciar el servidor VNC:

 exec x11vnc -forever -create 

Ahora solo conéctese con el cliente VNC al puerto 5900 (o lo que definió en su elección) a localhost e ingrese a la consola virtual del servidor HP.

El código se encuentra en el repositorio git docker-ilo-client .

Comando completo de una línea para conectarse a la consola virtual de 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 ILO, SOME_USERNAME es login y SOME_PASSWORD es contraseña para ILO.

Luego, vaya con cualquier cliente VNC para direccionar vnc://localhost:5900 .
Las solicitudes de extracción y los comentarios son más que bienvenidos.

El proyecto similar para la conexión a los servidores IDRAC de Dell está aquí: docker-idrac6 .

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


All Articles