Contenitore Docker per gestire server HP tramite ILO

Probabilmente ti starai chiedendo: a cosa serve Docker qui? Qual è il problema di accedere all'interfaccia web di ILO e configurare il tuo server come si deve?
E anche io lo pensavo quando mi sono stati dati un paio di vecchi server inutilizzati che dovevo reinstallare (quello che si chiama reprovision). I server si trovano dall'altra parte dell'oceano, l'unica cosa disponibile è l'interfaccia web. E ovviamente dovevo accedere alla Console Virtuale per eseguire alcuni comandi. Qui è iniziato tutto.
Come saprete, per vari tipi di console virtuali si utilizza normalmente Java, sia per HP che per Dell. Comunque, in passato era così (e i sistemi sono molto vecchi). Ma Firefox e Chrome hanno smesso di supportare questi applet da tempo, e anche il nuovo IcedTea non funziona con questi sistemi. Quindi si sono delineate alcune opzioni:

1. Iniziare a costruire uno zoo di browser e versioni di Java sulla mia macchina, questa opzione è stata scartata subito. Non ho intenzione di torturare il sistema per un paio di comandi.
2. Avviare su una virtual machine qualcosa di abbastanza vecchio (sperimentando, si è scoperto che serve Java 6) e configurare tutto ciò che serve tramite essa.
3. È lo stesso di quanto descritto nel punto 2, ma in un contenitore, poiché anche diversi colleghi hanno riscontrato lo stesso problema ed è molto più facile condividere un link al contenitore su dockerhub piuttosto che un'immagine della macchina virtuale, con tutte le password, ecc.
(In realtà, sono arrivato al punto 3 solo dopo aver fatto il punto 2)
Oggi realizzeremo il punto 3.

Mi sono ispirato principalmente a due progetti:
1. docker-baseimage-gui
2. docker-firefox-java
In linea di massima, il primo progetto docker-baseimage-gui contiene già utilità e configurazioni per eseguire applicazioni desktop in Docker. Di solito, è necessario definire le variabili standard e l'applicazione sarà accessibile tramite browser (websocket) o VNC. Nel nostro caso, eseguiremo tramite Firefox e VNC, poiché non è stato possibile farlo via websocket.
Iniziamo installando i pacchetti necessari — Java 6 e IcedTea:

Esegui 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

Ora dobbiamo accedere alla pagina dell'interfaccia ILO e inserire il proprio login e password. Avviamo Firefox all'avvio automatico:

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

La variabile d'ambiente HILO_HOST contiene l'indirizzo web della nostra interfaccia ILO, ad esempio myhp.example.com
Per automatizzare il login, colleghiamo l'autenticazione. Il login in ILO avviene con una normale richiesta POST, a seguito della quale si ottiene un JSON session_key, che poi si passa nella richiesta GET:
Calcoliamo il session_key tramite curl, se sono definite le variabili di ambiente HILO_USER e HILO_PASS:

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

Dopo aver registrato il session_key nel docker, è possibile avviare VNC:

exec x11vnc -forever -create

Ora basta connettersi tramite VNC alla porta 5900 (o a qualsiasi altra a vostra scelta) su localhost e accedere alla console virtuale.
Tutto il codice si trova nel repository docker-ilo-client.
Il comando completo per connettersi a 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

dove ADDRESS_OF_YOUR_HOST è il nome host di ILO, SOME_USERNAME è il login e rispettivamente SOME_PASSWORD è la password per ILO.
Dopo di che basta avviare qualsiasi client VNC all'indirizzo: vnc://localhost:5900
Le integrazioni e le pull request sono sicuramente benvenute.

Esiste un progetto simile per connettersi alle interfacce IDRAC delle macchine DELL: docker-idrac6.

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS 🔥 Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS | ProHoster