Docker vsebnik za upravljanje HP strežnikov prek ILO

Verjetno se sprašujete - zakaj Docker obstaja tukaj? V čem je težava s prijavo v spletni vmesnik ILO in nastavitvijo strežnika po potrebi?
To sem mislil, ko so mi dali nekaj starih nepotrebnih strežnikov, ki sem jih moral znova namestiti (kar se imenuje reprovision). Sam strežnik se nahaja v tujini, na voljo je le spletni vmesnik. No, zato sem moral iti v virtualno konzolo, da sem zagnal nekaj ukazov. Tam se je začelo.
Kot veste, se Java običajno uporablja za različne vrste virtualnih konzol, bodisi v HP-ju ali Dell-u. Vsaj tako je bilo včasih (in sistemi so zelo stari). Toda Firefox in Chrome sta že zdavnaj prenehala podpirati te programčke in novi IcedTea ne deluje s temi sistemi. Zato se je pojavilo več možnosti:

1. Začnite graditi živalski vrt iz brskalnikov in različic Jave na vašem računalniku, ta možnost ni bila več potrebna. Ni želje po norčevanju iz sistema zaradi nekaj ukazov.
2. Zaženite nekaj precej starega na virtualnem stroju (eksperimentalno se je izkazalo, da potrebujete Javo 6) in prek njega konfigurirajte vse, kar potrebujete.
3. Enako kot točka 2, samo v kontejnerju, saj je več kolegov naletelo na isto težavo in jim je veliko lažje prenesti povezavo do kontejnerja na Dockerhubu kot sliko virtualnega stroja, z vsemi gesli itd.
(Pravzaprav sem šele po 3. točki prišel do točke 2)
Danes bomo naredili 3. točko.

Navdihnila sta me predvsem dva projekta:
1. docker-baseimage-gui
2. docker-firefox-java
V bistvu prvi projekt docker-baseimage-gui že vsebuje pripomočke in konfiguracije za izvajanje namiznih aplikacij v Dockerju. Običajno morate definirati standardne spremenljivke in vaša aplikacija bo dostopna prek brskalnika (websocket) ali VNC. V našem primeru bomo zagnali prek Firefoxa in VNC; prek websocketa ni delovalo.
Najprej namestimo potrebne pakete - Java 6 in 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

Zdaj morate le iti na stran vmesnika ILO in vnesti svoje uporabniško ime in geslo. Zaženite Firefox v samodejnem zagonu:

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

Spremenljivka okolja HILO_HOST vsebuje na primer spletni naslov našega vmesnika ILO myhp.example.com
Za avtomatizacijo prijave dodajmo avtorizacijo. Prijava v ILO poteka z običajno zahtevo POST, zaradi česar prejmete JSON session_key, ki ga nato posredujete v zahtevi GET:
Izračunajmo session_key prek curl, če sta spremenljivki okolja HILO_USER in HILO_PASS definirani:

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

Ko posnamemo session_key v dockerju, lahko zaženemo VNC:

exec x11vnc -forever -create

Zdaj se preprosto povežemo prek VNC na vrata 5900 (ali katera koli druga po vaši izbiri) na lokalnem gostitelju in gremo na virtualno konzolo.
Vsa koda je v repozitoriju odjemalec docker-ilo.
Celoten ukaz za povezavo z 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

kjer je ADDRESS_OF_YOUR_HOST ime gostitelja ILO, SOME_USERNAME je prijava in v skladu s tem SOME_PASSWORD geslo za ILO.
Po tem preprosto zaženite katerega koli odjemalca VNC na naslov: vnc://localhost:5900
Dodatki in zahteve po vleku so seveda dobrodošli.

Podoben projekt obstaja za povezovanje z vmesniki IDRAC strojev DELL: docker-idrac6.

Vir: www.habr.com

Dodaj komentar