Docker konteiners HP serveru pārvaldībai, izmantojot ILO

Iespējams, jums rodas jautājums – kāpēc Docker šeit pastāv? Kāda ir problēma, piesakoties ILO tīmekļa saskarnē un vajadzības gadījumā iestatot serveri?
Tā es domāju, kad viņi man iedeva pāris vecus nevajadzīgus serverus, kas man bija jāpārinstalē (to sauc par atkārtotu nodrošināšanu). Pats serveris atrodas ārzemēs, vienīgais pieejamais ir tīmekļa interfeiss. Nu, attiecīgi, man bija jāiet uz virtuālo konsoli, lai palaistu dažas komandas. Tur tas sākās.
Kā jūs zināt, Java parasti izmanto dažāda veida virtuālajām konsolēm neatkarīgi no tā, vai tās ir HP vai Dell. Vismaz tā tas bija agrāk (un sistēmas ir ļoti vecas). Taču Firefox un Chrome jau sen pārtrauca atbalstīt šīs sīklietotnes, un jaunā IcedTea ar šīm sistēmām nedarbojas. Tāpēc parādījās vairākas iespējas:

1. Sāciet veidot zoodārzu no pārlūkprogrammām un Java versijām savā datorā, šī opcija vairs nebija nepieciešama. Nav vēlmes ņirgāties par sistēmu pāris komandu dēļ.
2. Virtuālajā mašīnā palaist kaut ko diezgan vecu (eksperimentāli izrādījās, ka vajag Java 6) un caur to konfigurēt visu nepieciešamo.
3. Tas pats, kas 2. punktā, tikai konteinerā, jo vairāki kolēģi saskārās ar vienu un to pašu problēmu un viņiem ir daudz vieglāk pārsūtīt saiti uz Dockerhub konteineru nekā virtuālās mašīnas attēlu, ar visām parolēm utt.
(Patiesībā es tiku līdz 3. punktam tikai pēc 2. punkta)
Mēs šodien izpildīsim 3. punktu.

Mani galvenokārt iedvesmoja divi projekti:
1. docker-baseimage-gui
2. docker-firefox-java
Būtībā pirmais projekts docker-baseimage-gui jau satur utilītas un konfigurācijas darbvirsmas lietojumprogrammu palaišanai programmā Docker. Parasti jums ir jādefinē standarta mainīgie, un jūsu lietojumprogramma būs pieejama, izmantojot pārlūkprogrammu (websocket) vai VNC. Mūsu gadījumā mēs sāksim, izmantojot Firefox un VNC; tas nedarbojās, izmantojot tīmekļa ligzdu.
Vispirms instalēsim nepieciešamās pakotnes - Java 6 un 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

Tagad atliek tikai doties uz ILO interfeisa lapu un ievadīt savu lietotājvārdu un paroli. Palaidiet Firefox automātiskajā startā:

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

Vides mainīgais HILO_HOST satur, piemēram, mūsu ILO saskarnes tīmekļa adresi myhp.example.com
Lai automatizētu pieteikšanos, pievienosim autorizāciju. Pieteikšanās ILO notiek ar parastu POST pieprasījumu, kā rezultātā jūs saņemat JSON session_key, kuru pēc tam nododat GET pieprasījumā:
Aprēķināsim session_key, izmantojot curl, ja ir definēti vides mainīgie HILO_USER un 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

Kad esam ierakstījuši session_key programmā Docker, mēs varam palaist VNC:

exec x11vnc -forever -create

Tagad mēs vienkārši savienojam caur VNC ar portu 5900 (vai jebkuru citu pēc jūsu izvēles) uz localhost un dodamies uz virtuālo konsoli.
Viss kods atrodas repozitorijā docker-ilo-klients.
Pilna komanda, lai izveidotu savienojumu ar 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

kur ADDRESS_OF_YOUR_HOST ir ILO saimniekdatora nosaukums, SOME_USERNAME ir pieteikšanās vārds un attiecīgi SOME_PASSWORD ILO parole.
Pēc tam vienkārši palaidiet jebkuru VNC klientu uz adresi: vnc://localhost:5900
Papildinājumi un izvilkšanas pieprasījumi, protams, ir apsveicami.

Pastāv līdzīgs projekts, lai izveidotu savienojumu ar DELL mašīnu IDRAC saskarnēm: docker-idrac6.

Avots: www.habr.com

Pievieno komentāru