Vous vous demandez peut-être pourquoi Docker est ici? Quel est le problème pour accéder à l'interface Web de l'OIT et configurer votre serveur comme il se doit?
J'ai donc pensé quand ils m'ont donné quelques vieux serveurs inutiles que j'ai dû réinstaller (ce qu'on appelle la réapprovisionnement). Le serveur lui-même est situé de l'autre côté de l'océan, la seule chose disponible est l'interface Web. Eh bien, en conséquence, j'ai dû aller dans la console virtuelle pour exécuter certaines commandes. C'est là que ça a commencé.
Comme vous le savez, pour différents types de consoles virtuelles, Java est généralement utilisé, qui est chez HP, chez Dell. Dans tous les cas, il était si précis (et les systèmes sont très anciens). Mais Firefox et Chrome ont depuis longtemps cessé de prendre en charge ces applets, et le nouveau IcedTea ne fonctionne pas avec ces systèmes. Par conséquent, plusieurs options ont été identifiées:
- Pour commencer à construire un zoo à partir de navigateurs et de versions Java sur votre machine, cette option a disparu immédiatement. Il n'y a aucun désir de se moquer du système pour quelques équipes.
- Exécutez quelque chose d'assez ancien sur la machine virtuelle (il a été expérimentalement découvert que Java 6 est nécessaire) et configurez tout ce dont vous avez besoin à travers elle.
- La même chose que le point 2, uniquement dans le conteneur, car plusieurs collègues ont rencontré le même problème et il est beaucoup plus facile de leur transmettre un lien vers le conteneur sur dockerhub qu'une image d'une machine virtuelle, avec tous les mots de passe, etc.
(En fait, j'ai atteint le point 3 seulement après avoir fait le point 2)
Point 3 que nous ferons aujourd'hui.
J'ai été principalement inspiré par deux projets:
- docker-baseimage-gui
- docker-firefox-java
En principe, le premier projet
docker-baseimage-gui contient déjà des utilitaires et des configurations pour lancer des applications de bureau dans docker. Habituellement, vous devez définir des variables standard et votre application sera accessible via un navigateur (websocket) ou VNC. Dans notre cas, nous allons exécuter via Firefox et VNC, via websocket cela n'a pas fonctionné.
Tout d'abord, installez 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
Reste maintenant à aller sur la page d'interface de l'OIT et à entrer votre nom d'utilisateur et votre mot de passe. Nous démarrons 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 interface ILO, par exemple
myhp.example.com .
Pour automatiser l'entrée, visons l'autorisation. La connexion à ILO est effectuée par une demande POST régulière, à la suite de laquelle vous obtenez une clé_session JSON, que vous transmettez ensuite dans une demande GET.
Calculez 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é session_key dans le docker, nous pouvons démarrer VNC:
exec x11vnc -forever -create
Maintenant, connectez-vous simplement via VNC au port 5900 (ou tout autre de votre choix) sur localhost et accédez à la console virtuelle.
Tout le code se trouve dans le référentiel
docker-ilo-client .
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 ILO, SOME_USERNAME est le nom d'utilisateur et, en conséquence, SOME_PASSWORD est le mot de passe ILO.
Après cela, démarrez simplement n'importe quel client VNC à l'adresse:
vnc://localhost:5900
Les ajouts et les demandes de tirage sont les bienvenus, bien sûr.
Un projet similaire existe pour la connexion aux interfaces IDRAC des machines DELL:
docker-idrac6 .