Conteneur Docker pour la gestion des serveurs HP avec ILO

Origine en russe

Eh bien, vous pouvez vous demander - pourquoi devrais-je utiliser un conteneur Docker à cette fin? Quel est le problème pour entrer dans l'interface Web de l'OIT et gérer le serveur comme d'habitude?

La même pensée que j'avais quand j'ai quelques vieux serveurs qui nécessitaient une réapprovisionnement. Les serveurs sont situés sur différents continents et la seule interface que je possédais était juste une interface Web de l'OIT. Et quand j'ai dû entrer quelques commandes manuelles via la console virtuelle, j'ai découvert que ce n'était guère possible.

Pour différents types de console virtuelle de serveurs (HP et Dells), des applets Web Java sont généralement utilisées. Mais Firefox et Chrome ne les prennent plus en charge et le plus récent IcedTea ne fonctionne de toute façon pas avec cet ancien système. J'ai donc eu quelques options:

  1. Pour installer en parallèle les anciennes versions des navigateurs et Java, en essayant de trouver une combinaison requise, sur mon système. Cette option a été filtrée, car je ne veux pas polluer mon système simplement à cause de quelques commandes de console.
  2. Créez une machine virtuelle avec d'anciens systèmes, installez-y Java 6 et utilisez la console virtuelle comme auparavant.
  3. Identique au point 2, mais avec conteneur, pas une machine virtuelle. Étant donné que quelques-uns de mes collègues ont rencontré le même problème, je préférerais leur passer une commande bash pour exécuter la console virtuelle au lieu de partager le disque de la machine virtuelle, les mots de passe, etc.

(Pour être honnête, le point 3 que j'ai fait seulement après le point 2).
Le point 3 est ce que nous allons mettre en œuvre aujourd'hui.

Je me suis surtout inspiré de ces deux projets:

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

En fait, le premier projet docker-baseimage-gui contient déjà toutes les configurations et les outils nécessaires pour démarrer les applications de bureau dans le navigateur dans un conteneur. Habituellement, vous définissez des variables d'environnement spécifiques et votre application deviendra accessible via un navigateur (websocket) ou VNC. Dans notre cas, nous commençons par Firefox et VNC, websocket ne fonctionnait pas bien.

Tout d'abord, installons les packages requis: Java 6 et 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 

Maintenant, ouvrons la page Web de l'interface de l'OIT dans Firefox et entrez-y les informations d'identification. Démarrez 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 est l'URL de notre interface ILO, par exemple https://myhp.example.com .

Pour l'automatisation, ajoutons l'authentification. La connexion BIT est exécutée via une simple requête POST, en réponse, vous obtenez la valeur session_key, puis passez cette valeur dans la requête GET. Découvrons session_key avec curl si les variables d'environnement HILO_USER et HILO_PASS sont définies:

 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 

Après avoir écrit session_key dans des conteneurs, nous pouvons démarrer le serveur VNC:

 exec x11vnc -forever -create 

Maintenant, connectez-vous simplement avec le client VNC au port 5900 (ou ce que vous avez défini dans votre choix) à localhost et entrez dans la console virtuelle du serveur HP.

Le code se trouve dans le référentiel git docker-ilo-client .

Commande complète sur une ligne pour se connecter à la console virtuelle de l'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 

où ADDRESS_OF_YOUR_HOST est le nom d'hôte de l'OIT, SOME_USERNAME est la connexion et SOME_PASSWORD est le mot de passe de l'OIT.

Ensuite, allez avec n'importe quel client VNC pour adresser vnc://localhost:5900 .
Les demandes de tirage et les commentaires sont les bienvenus.

Le projet similaire pour la connexion aux serveurs Dell IDRAC est ici: docker-idrac6 .

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


All Articles