Docker-ujo por administri HP-servilojn per ILO

Vi verŝajne demandas vin - kial Docker ekzistas ĉi tie? Kio estas la problemo kun ensaluti en la TTT-interfaco de ILO kaj agordi vian servilon laŭbezone?
Tion mi pensis, kiam ili donis al mi kelkajn malnovajn nenecesajn servilojn, kiujn mi bezonis reinstali (kio nomiĝas reprovizado). La servilo mem situas eksterlande, la sola disponebla estas la retinterfaco. Nu, sekve, mi devis iri al la Virtuala Konzolo por ruli kelkajn komandojn. Tie ĝi komenciĝis.
Kiel vi scias, Java estas kutime uzata por diversaj specoj de virtualaj konzoloj, ĉu en HP aŭ Dell. Almenaŭ tiel antaŭe estis (kaj la sistemoj estas tre malnovaj). Sed Fajrovulpo kaj Chrome ĉesis subteni ĉi tiujn apletojn antaŭ longe, kaj la nova IcedTea ne funkcias kun ĉi tiuj sistemoj. Tial, pluraj ebloj aperis:

1. Komencu konstrui zoon el retumiloj kaj Java-versioj sur via maŝino, ĉi tiu opcio ne plu estis bezonata. Ne estas deziro moki la sistemon pro kelkaj komandoj.
2. Lanĉu ion sufiĉe malnovan sur la virtuala maŝino (ekzeperimente montriĝis, ke vi bezonas Java 6) kaj agordu ĉion, kion vi bezonas per ĝi.
3. Same kiel punkto 2, nur en ujo, ĉar pluraj kolegoj renkontis la saman problemon kaj estas multe pli facile transdoni al ili ligilon al ujo sur Dockerhub ol virtuala maŝina bildo, kun ĉiuj pasvortoj, ktp.
(Fakte, mi alvenis nur al punkto 3 post kiam mi faris punkton 2)
Ni faros la punkton 3 hodiaŭ.

Mi estis inspirita ĉefe de du projektoj:
1. docker-baseimage-gui
2. docker-firefox-java
Esence la unua projekto docker-baseimage-gui jam enhavas ilojn kaj agordojn por ruli labortablajn aplikaĵojn en Docker. Kutime vi devas difini normajn variablojn kaj via aplikaĵo estos alirebla per retumilo (websocket) aŭ VNC. En nia kazo, ni lanĉos per Firefox kaj VNC; ĝi ne funkciis per websocket.
Unue, ni instalu la necesajn pakaĵojn - Java 6 kaj 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

Nun vi nur devas iri al la interfaco-paĝo de ILO kaj enigi vian uzantnomon kaj pasvorton. Lanĉu Fajrovulpon en aŭtomata starto:

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

La mediovariablo HILO_HOST enhavas la retadreson de nia ILO-interfaco, ekzemple myhp.example.com
Por aŭtomatigi la ensaluton, ni aldonu rajtigon. Ensaluto al ILO okazas kun regula POST-peto, rezulte de kiu vi ricevas JSON-session_key, kiun vi poste transdonas en GET-peto:
Ni kalkulu session_key per buklo se la mediovariabloj HILO_USER kaj HILO_PASS estas difinitaj:

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

Post kiam ni registris la session_key en docker, ni povas lanĉi VNC:

exec x11vnc -forever -create

Nun ni simple konektas per VNC al la haveno 5900 (aŭ iu ajn alia laŭ via elekto) ĉe loka gastiganto kaj iras al la virtuala konzolo.
Ĉiu kodo estas en la deponejo docker-ilo-client.
Plena komando por konekti al 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

kie ADDRESS_OF_YOUR_HOST estas la gastiga nomo de ILO, SOME_USERNAME estas la ensaluto kaj, sekve, SOME_PASSWORD la pasvorto por ILO.
Post tio, simple lanĉu ajnan VNC-klienton al la adreso: vnc://localhost:5900
Aldonoj kaj tiraj petoj estas kompreneble bonvenaj.

Simila projekto ekzistas por ligado al IDRAC-interfacoj de DELL-maŝinoj: docker-idrac6.

fonto: www.habr.com

Aldoni komenton