Container Docker pentru gestionarea serverelor HP prin ILO

Probabil că vă întrebați - de ce există Docker aici? Care este problema cu conectarea la interfața web ILO și configurarea serverului dvs. după cum este necesar?
La asta m-am gândit când mi-au dat câteva servere vechi inutile pe care trebuia să le reinstalez (ceea ce se numește reprovisionare). Serverul în sine este situat în străinătate, singurul lucru disponibil este interfața web. Ei bine, în consecință, a trebuit să merg la Consola virtuală pentru a rula câteva comenzi. Acolo a început.
După cum știți, Java este de obicei folosit pentru diverse tipuri de console virtuale, fie în HP sau Dell. Cel puțin așa a fost înainte (și sistemele sunt foarte vechi). Dar Firefox și Chrome au încetat să mai suporte aceste appleturi cu mult timp în urmă, iar noul IcedTea nu funcționează cu aceste sisteme. Prin urmare, au apărut mai multe opțiuni:

1. Începeți să construiți o grădină zoologică din browsere și versiuni Java pe mașina dvs., această opțiune nu mai era necesară. Nu există dorința de a bate joc de sistem de dragul unor comenzi.
2. Lansați ceva destul de vechi pe mașina virtuală (s-a dovedit experimental că aveți nevoie de Java 6) și configurați tot ce aveți nevoie prin el.
3. La fel ca la punctul 2, doar într-un container, deoarece mai mulți colegi au întâmpinat aceeași problemă și este mult mai ușor să le transferați un link către un container pe Dockerhub decât o imagine de mașină virtuală, cu toate parolele etc.
(De fapt, am ajuns la punctul 3 doar după ce am făcut punctul 2)
Vom face punctul 3 astăzi.

M-am inspirat în principal din două proiecte:
1. docker-baseimage-gui
2. docker-firefox-java
Practic primul proiect docker-baseimage-gui conține deja utilități și configurații pentru rularea aplicațiilor desktop în Docker. De obicei, trebuie să definiți variabile standard și aplicația dvs. va fi accesibilă prin browser (websocket) sau VNC. În cazul nostru, vom lansa prin Firefox și VNC, nu a funcționat prin websocket.
Mai întâi, să instalăm pachetele necesare - Java 6 și 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

Acum tot ce trebuie să faceți este să mergeți la pagina interfeței ILO și să introduceți numele de utilizator și parola. Lansați Firefox în pornire automată:

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

Variabila de mediu HILO_HOST conține adresa web a interfeței noastre ILO, de exemplu myhp.example.com
Pentru a automatiza autentificarea, să adăugăm autorizarea. Conectarea la ILO are loc cu o solicitare POST obișnuită, în urma căreia primiți o cheie JSON session_key, pe care apoi o transmiteți într-o solicitare GET:
Să calculăm session_key prin curl dacă variabilele de mediu HILO_USER și HILO_PASS sunt definite:

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

Odată ce am înregistrat cheia session_key în docker, putem lansa VNC:

exec x11vnc -forever -create

Acum pur și simplu ne conectăm prin VNC la portul 5900 (sau oricare altul la alegere) pe localhost și mergem la consola virtuală.
Tot codul este în depozit docker-ilo-client.
Comandă completă pentru a vă conecta la 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

unde ADDRESS_OF_YOUR_HOST este numele gazdei ILO, SOME_USERNAME este numele de conectare și, în consecință, SOME_PASSWORD parola pentru ILO.
După aceea, pur și simplu lansați orice client VNC la adresa: vnc://localhost:5900
Adăugările și solicitările de extragere sunt, desigur, binevenite.

Există un proiect similar pentru conectarea la interfețele IDRAC ale mașinilor DELL: docker-idrac6.

Sursa: www.habr.com

Adauga un comentariu