Contenitore Docker per la gestione dei server HP tramite ILO

Potresti chiederti — a cosa serve Docker qui? Qual è il problema di accedere all'interfaccia web ILO e configurare il proprio server come si deve?
Anche io lo pensai quando mi diedero un paio di server vecchi e inutili che dovevo reinstallare (quello che si chiama reprovision). I server si trovano dall'altra parte dell'oceano, l'unica cosa accessibile è l'interfaccia web. E quindi dovevo entrare nella Console Virtuale per eseguire alcuni comandi. Qui è iniziato tutto.
Come è noto, per vari tipi di console virtuali si usa di solito Java, sia per HP che per Dell. D'altronde così era sicuramente in passato (e i sistemi sono molto vecchi). Ma Firefox e Chrome non supportano più questi applet da tempo, e il nuovo IcedTea non funziona con questi sistemi. Pertanto sono emerse diverse opzioni:

1. Iniziare a costruire uno zoo di browser e versioni Java sulla mia macchina; questa opzione è stata scartata immediatamente. Non ho voglia di tormentare il sistema per un paio di comandi.
2. Eseguire su una macchina virtuale qualcosa di sufficientemente vecchio (dalla mia esperienza, avevo bisogno di Java 6) e configurare tutto ciò di cui avevo bisogno.
3. La stessa cosa del punto 2, solo in un container, dato che ho incontrato lo stesso problema con alcuni colleghi e sarebbe molto più facile inviare loro un link al container su dockerhub, piuttosto che all'immagine della macchina virtuale, con tutte le password e così via.
(In realtà, sono arrivato al punto 3 solo dopo aver completato 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 la tua applicazione sarà disponibile tramite il browser (websocket) o VNC. Nel nostro caso, ci connetteremo tramite Firefox e VNC; tramite websocket non ci siamo riusciti.
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 solo accedere alla pagina dell'interfaccia ILO e inserire il nostro nome utente 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 l'accesso, colleghiamo l'autenticazione. L'accesso a ILO avviene attraverso una normale richiesta POST, dalla quale si ottiene una sessione JSON session_key, che poi si passa in una richiesta GET:
Calcoliamo session_key tramite curl, se sono definite le variabili d'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 session_key nel docker, possiamo avviare VNC:

exec x11vnc -forever -create

Ora ci connettiamo semplicemente tramite VNC alla porta 5900 (o qualsiasi altra di tua scelta) su localhost e accediamo alla console virtuale.
Tutto il codice si trova nel repository docker-ilo-client.
Il comando completo per collegarsi 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 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
Contributi e pull request sono ovviamente benvenuti.

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, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster