Docker konteiner HP serverite haldamiseks läbi ILO

Võib-olla küsid, miks on siin Docker? Mis probleem on siseneda ILO veebiliidesesse ja seadistada server nagu vaja?
Nii mõtlesin ka, kui mulle anti paar vana, mittevajalikku serverit, mida pidin uuesti paigaldama (seda nimetatakse reprovisioniks). Serverid asuvad ookeani taga, ainus kergesti ligipääsetav on veebiliides. Ja loomulikult pidin ma sisenema virtuaalsesse konsooli, et mõned käsud täita. Siit see kõik algas.
Kuna on teada, et erinevate virtuaalsete konsoolide jaoks kasutatakse tavaliselt Java't, nii HP-l kui ka Dellil. Igal juhul oli see varem nii (ja süsteemid on väga vanad). Kuid Firefox ja Chrome on juba ammu need applet'id toetaud, samuti ei tööta uus IcedTea nende süsteemidega. Seetõttu kujunes välja mitu varianti:

1. Alustada oma arvutis brauserite ja Java versioonide loomisest, see variant loobusin kohe. Mingeid soove süsteemi piinamiseks paariks käsuks ei olnud.
2. Käivitada virtuaalmasinas midagi piisavalt vana (katse-eksituse meetodil selgus, et vajalik on Java 6) ja selle kaudu konfigureerida kõik, mis vajalik.
3. Sama mis nagu punkt 2, ainult konteineris, kuna sama probleemiga on silmitsi seisnud mitmed kolleegid ja palju lihtsam on jagada neile linki konteinerile dockerhubis kui virtuaalmasina pilti koos kõigi paroolide ja muuga.
(Tegelikult jõudsin punktini 3 alles pärast punkt 2 tegemist)
Punkt 3 teeme täna.

Olen peamiselt inspireeritud kahest projektist:
1. docker-baseimage-gui
2. docker-firefox-java
Esimene projekt docker-baseimage-gui sisaldab juba utiliite ja konfiguratsioone töölauarakenduste käitamiseks dockeri keskkonnas. Tavaliselt peate määratlema standardmuutujad ja teie rakendus on hõlpsasti saadaval brauseri (websocket) või VNC kaudu. Meie juhul käivitame selle Firefoxi ja VNC kaudu, websocketiga ei õnnestunud.
Esmalt installime vajalikud paketid — Java 6 ja 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

Nüüd tuleb vaid minna ILO liidese lehele ja sisestada oma kasutajanimi ja parool. Käivitame Firefoxi automaatselt:

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

Keskkonnamuutuja HILO_HOST sisaldab meie ILO liidese veebiaadressi, näiteks myhp.example.com
Sissepääsu automatiseerimiseks lisame autoriseerimise. ILO-sse sisenemine toimub tavapärase POST-päringuga, mille tulemuseks on JSON session_key, mille edastate seejärel GET-päringus:
Arvutame session_key'i läbi curl'i, kui keskkonnamuutujad HILO_USER ja HILO_PASS on määratud:

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

Pärast seda, kui oleme session_key'i konteineris salvestanud, saab VNC'i käivitada:

exec x11vnc -forever -create

Lihtsalt ühendame VNC kaudu pordi 5900 (või mõne muu, mida te soovite) localhost'iga ja siseneme virtuaalsesse konsooli.
Kogu kood asub repo's docker-ilo-client.
Täielik käsk ILO-le ühendamiseks:

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

kus ADDRESS_OF_YOUR_HOST on ILO hosti nimi, SOME_USERNAME — kasutajanimi ja vastavalt SOME_PASSWORD on ILO parool.
Pärast seda käivitate lihtsalt mis tahes VNC kliendi aadressil: vnc://localhost:5900
Mõtted ja Pull-requestid on loomulikult teretulnud.

Sarnane projekt eksisteerib DELL masinate IDRAC liideste ühendamiseks: docker-idrac6.

Allikas: habr.com

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster