Conteneur Docker pour la gestion des serveurs HP via OIT

Vous vous demandez probablement : pourquoi Docker existe-t-il ici ? Quel est le problème pour vous connecter à l'interface Web de l'OIT et configurer votre serveur selon vos besoins ?
C’est ce que j’ai pensé lorsqu’ils m’ont donné quelques vieux serveurs inutiles que je devais réinstaller (ce qu’on appelle la reprovision). Le serveur lui-même est situé à l’étranger, la seule chose disponible est l’interface Web. Eh bien, en conséquence, j'ai dû accéder à la console virtuelle pour exécuter certaines commandes. C'est là que tout a commencé.
Comme vous le savez, Java est généralement utilisé pour différents types de consoles virtuelles, que ce soit chez HP ou Dell. Du moins, c’était comme ça (et les systèmes sont très anciens). Mais Firefox et Chrome ne prennent plus en charge ces applets depuis longtemps, et le nouveau IcedTea ne fonctionne pas avec ces systèmes. Plusieurs options se sont alors dégagées :

1. Commencez à construire un zoo à partir des navigateurs et des versions Java sur votre machine, cette option n'était plus nécessaire. Il n'y a aucune envie de se moquer du système pour quelques commandes.
2. Lancez quelque chose d'assez ancien sur la machine virtuelle (il s'est avéré expérimentalement que vous avez besoin de Java 6) et configurez tout ce dont vous avez besoin via celui-ci.
3. Identique au point 2, uniquement dans un conteneur, puisque plusieurs collègues ont rencontré le même problème et il est bien plus simple de leur transférer un lien vers un conteneur sur Dockerhub qu'une image de machine virtuelle, avec tous les mots de passe, etc.
(En fait, je n'ai atteint le point 3 qu'après avoir fait le point 2)
Nous ferons le point 3 aujourd'hui.

Je me suis inspiré principalement de deux projets :
1. docker-baseimage-gui
2. docker-firefox-java
En gros, le premier projet docker-baseimage-gui contient déjà des utilitaires et des configurations pour exécuter des applications de bureau dans Docker. Généralement, vous devez définir des variables standard et votre application sera accessible via un navigateur (websocket) ou VNC. Dans notre cas, nous lancerons via Firefox et VNC ; cela n'a pas fonctionné via websocket.
Tout d'abord, installons les packages nécessaires - 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

Il ne vous reste plus qu'à vous rendre sur la page de l'interface du BIT et à saisir votre nom d'utilisateur et votre mot de passe. Lancez Firefox en démarrage automatique :

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

La variable d'environnement HILO_HOST contient l'adresse web de notre interfaceILO, par exemple monhp.exemple.com
Pour automatiser la connexion, ajoutons une autorisation. La connexion à l'OIT s'effectue avec une requête POST standard, à la suite de laquelle vous recevez une clé de session JSON, que vous transmettez ensuite dans une requête GET :
Calculons session_key via 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

Une fois que nous avons enregistré la session_key dans docker, nous pouvons lancer VNC :

exec x11vnc -forever -create

Maintenant, nous nous connectons simplement via VNC au port 5900 (ou tout autre de votre choix) sur localhost et accédons à la console virtuelle.
Tout le code est dans le référentiel client docker-ilo.
Commande complète pour se connecter à 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 le login et, par conséquent, SOME_PASSWORD le mot de passe de l'OIT.
Après cela, lancez simplement n'importe quel client VNC à l'adresse : vnc://localhost:5900
Les ajouts et les demandes de tirage sont bien sûr les bienvenus.

Un projet similaire existe pour la connexion aux interfaces IDRAC des machines DELL : docker-idrac6.

Source: habr.com

Ajouter un commentaire