Vous vous demandez peut-ĂȘtre pourquoi utiliser Docker ici ? Quel est le problĂšme d'accĂ©der Ă l'interface web ILO et de configurer votre serveur correctement ?
C'est ce que je pensais aussi quand on m'a donné quelques vieux serveurs inutilisés que je devais réinstaller (ce qu'on appelle reprovision). Les serveurs sont de l'autre cÎté de l'océan, la seule chose dont j'ai accÚs est l'interface web. Et donc, je devais entrer dans la Console Virtuelle pour exécuter certaines commandes. C'est là que tout a commencé.
Comme on le sait, différents types de consoles virtuelles utilisent généralement Java, que ce soit chez HP ou chez Dell. En tout cas, c'était le cas auparavant (et les systÚmes sont trÚs anciens). Mais Firefox et Chrome ont depuis longtemps cessé de supporter ces applets, et le nouveau IcedTea ne fonctionne pas avec ces systÚmes. Plusieurs options se sont donc présentées :
1. Commencer à construire un zoo de navigateurs et de versions de Java sur ma machine, cette option a été écartée immédiatement. Je n'avais aucune envie de torturer le systÚme pour quelques commandes.
2. Lancer quelque chose de suffisamment ancien sur une machine virtuelle (il s'est avéré par expérience qu'il fallait Java 6) et configurer tout ce qu'il faut à travers elle.
3. La mĂȘme chose que le point 2, mais dans un conteneur, car plusieurs collĂšgues ont rencontrĂ© le mĂȘme problĂšme et il est beaucoup plus facile de leur transmettre un lien vers un conteneur sur dockerhub que l'image d'une machine virtuelle, avec tous les mots de passe, etc.
(En réalité, je n'ai atteint le point 3 qu'aprÚs avoir réalisé le point 2.)
Nous allons nous occuper du point 3 aujourd'hui.
Je me suis principalement inspiré de deux projets :
1.
2.
En principe, le premier projet contient déjà des utilitaires et des configurations pour exécuter des applications de bureau dans Docker. Vous devez généralement définir des variables standards et votre application sera accessible via un navigateur (websocket) ou VNC. Dans notre cas, nous allons l'exécuter via Firefox et VNC, car ça n'a pas fonctionné avec websocket.
Tout d'abord, installons les paquets nĂ©cessaires â Java 6 et IcedTea :
EXĂCUTEZ 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 reste plus qu'à se connecter à la page de l'interface ILO et d'entrer votre identifiant et votre mot de passe. Nous lançons Firefox au démarrage :
EXĂCUTEZ 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 interface ILO, par exemple
Pour automatiser la connexion, ajoutons l'authentification. La connexion Ă ILO se fait par une requĂȘte POST classique, Ă la suite de laquelle vous obtenez un JSON session_key, que vous transmettez ensuite dans une requĂȘte GET :
Calculons le 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
AprÚs avoir enregistré le session_key dans Docker, vous pouvez démarrer VNC :
exec x11vnc -forever -create
Il suffit maintenant de se connecter via VNC au port 5900 (ou à tout autre de votre choix) sur localhost et d'accéder à la console virtuelle.
Tout le code se trouve dans le dépÎt .
La commande complĂšte pour se connecter Ă 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
oĂč ADDRESS_OF_YOUR_HOST est le nom d'hĂŽte ILO, SOME_USERNAME est le login et, respectivement, SOME_PASSWORD est le mot de passe ILO.
AprÚs cela, vous démarrez simplement n'importe quel client VNC à l'adresse : vnc://localhost:5900
Les contributions et les demandes de tirage sont bien sûr les bienvenues.
Un projet similaire existe pour se connecter aux interfaces IDRAC des machines DELL : .
Source : habr.com
