Kontenitur Docker għall-ġestjoni ta' servers HP permezz tal-ILO

Inti tista 'tistaqsi - għaliex Docker jeżistu hawn? X'inhi l-problema meta tidħol fl-interface tal-web tal-ILO u twaqqaf is-server tiegħek kif meħtieġ?
Dak huwa dak li ħsibt meta tawni ftit servers qodma mhux meħtieġa li kelli bżonn ninstalla mill-ġdid (dak li jissejjaħ riforniment). Is-server innifsu jinsab barra l-pajjiż, l-unika ħaġa disponibbli hija l-interface tal-web. Ukoll, għalhekk, kelli mmur il-Virtwali Console biex inmexxi xi kmandi. Hemmhekk beda.
Kif tafu, Java normalment jintuża għal diversi tipi ta 'consoles virtwali, kemm jekk f'HP jew Dell. Mill-inqas hekk kien (u s-sistemi huma antiki ħafna). Iżda Firefox u Chrome waqfu jappoġġaw dawn l-applets żmien twil ilu, u l-IcedTea il-ġdid ma jaħdimx ma’ dawn is-sistemi. Għalhekk, ħarġu diversi għażliet:

1. Ibda tibni żoo minn browsers u verżjonijiet Java fuq il-magna tiegħek, din l-għażla ma kinitx aktar meħtieġa. M'hemm l-ebda xewqa li mock-sistema għall-fini ta 'koppja ta' kmandi.
2. Tnedija xi ħaġa pjuttost antika fuq il-magna virtwali (irriżulta b'mod sperimentali li għandek bżonn Java 6) u kkonfigura dak kollu li għandek bżonn permezz tagħha.
3. L-istess bħal punt 2, f'kontenitur biss, peress li diversi kollegi ltaqgħu mal-istess problema u huwa ħafna aktar faċli li jiġu trasferiti link għal kontenitur fuq Dockerhub milli immaġni ta 'magna virtwali, bil-passwords kollha, eċċ.
(Fil-fatt, wasalt biss sal-punt 3 wara li għamilt il-punt 2)
Se nagħmlu l-punt 3 illum.

Ġejt ispirat prinċipalment minn żewġ proġetti:
1. docker-baseimage-gui
2. docker-firefox-java
Bażikament l-ewwel proġett docker-baseimage-gui diġà fih utilitajiet u konfigurazzjonijiet għat-tħaddim tal-applikazzjonijiet tad-desktop f'Docker. Tipikament ikollok bżonn tiddefinixxi varjabbli standard u l-applikazzjoni tiegħek tkun aċċessibbli permezz tal-browser (websocket) jew VNC. Fil-każ tagħna, se nniedu permezz tal-Firefox u VNC; ma ħadimx permezz tal-websocket.
L-ewwel, ejja ninstallaw il-pakketti meħtieġa - Java 6 u 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

Issa kull ma trid tagħmel hu li tmur fil-paġna tal-interface tal-ILO u daħħal l-isem tal-utent u l-password tiegħek. Tnedija Firefox fl-awtostart:

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

Il-varjabbli ambjentali HILO_HOST fiha l-indirizz tal-web tal-interface tal-ILO tagħna, pereżempju myhp.example.com
Biex awtomat il-login, ejja nżidu l-awtorizzazzjoni. Il-login ma' ILO sseħħ b'talba POST regolari, li b'riżultat tagħha tirċievi JSON session_key, li mbagħad tgħaddi f'talba GET:
Ejja nikkalkulaw session_key permezz curl jekk il-varjabbli ambjentali HILO_USER u HILO_PASS huma definiti:

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

Ladarba nkunu rreġistrajna s-session_key fid-docker, nistgħu nniedu VNC:

exec x11vnc -forever -create

Issa aħna sempliċiment nikkonnettjaw permezz ta 'VNC mal-port 5900 (jew kwalunkwe ieħor tal-għażla tiegħek) fuq localhost u mur fil-console virtwali.
Il-kodiċi kollu jinsab fir-repożitorju docker-ilo-client.
Kmand sħiħ biex tikkonnettja mal-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

fejn ADDRESS_OF_YOUR_HOST huwa l-isem ospitanti tal-ILO, SOME_USERNAME huwa l-login u, għaldaqstant, SOME_PASSWORD il-password għall-ILO.
Wara dan, sempliċement iniedi kwalunkwe klijent VNC fl-indirizz: vnc://localhost:5900
Żidiet u talbiet għall-ġibda huma, ovvjament, milqugħa.

Jeżisti proġett simili għall-konnessjoni ma 'interfaces IDRAC ta' magni DELL: docker-idrac6.

Sors: www.habr.com

Żid kumment