Kontejner Docker për menaxhimin e serverëve HP nëpërmjet ILO

Ndoshta po pyesni veten - pse ekziston Docker këtu? Cili është problemi me hyrjen në ndërfaqen e internetit të ILO dhe vendosjen e serverit tuaj sipas nevojës?
Kjo është ajo që mendova kur më dhanë disa serverë të vjetër të panevojshëm që më duhej t'i instaloja përsëri (ajo që quhet riprodhim). Vetë serveri ndodhet jashtë shtetit, e vetmja gjë në dispozicion është ndërfaqja në internet. Epo, në përputhje me rrethanat, më duhej të shkoja në Virtual Console për të ekzekutuar disa komanda. Aty filloi.
Siç e dini, Java zakonisht përdoret për lloje të ndryshme të konzollave virtuale, qoftë në HP apo Dell. Të paktën kështu ka qenë (dhe sistemet janë shumë të vjetra). Por Firefox dhe Chrome ndaluan së mbështeturi këto aplikacione shumë kohë më parë dhe IcedTea i ri nuk funksionon me këto sisteme. Prandaj, u shfaqën disa opsione:

1. Filloni të ndërtoni një kopsht zoologjik nga shfletuesit dhe versionet Java në kompjuterin tuaj, ky opsion nuk ishte më i nevojshëm. Nuk ka dëshirë për të tallur sistemin për hir të disa komandave.
2. Hapni diçka mjaft të vjetër në makinën virtuale (eksperimentalisht doli që ju nevojitet Java 6) dhe konfiguroni gjithçka që ju nevojitet përmes saj.
3. Njësoj si pika 2, vetëm në një kontenier, pasi disa kolegë kanë hasur të njëjtin problem dhe është shumë më e lehtë t'i transferosh një lidhje në një kontenier në Dockerhub sesa një imazh të makinës virtuale, me të gjithë fjalëkalimet, etj.
(Në fakt, unë arrita në pikën 3 pasi bëra pikën 2)
Sot do të bëjmë pikën 3.

Jam frymëzuar kryesisht nga dy projekte:
1. docker-baseimage-gui
2. docker-firefox-java
Në thelb projekti i parë docker-baseimage-gui tashmë përmban shërbime dhe konfigurime për ekzekutimin e aplikacioneve desktop në Docker. Në mënyrë tipike ju duhet të përcaktoni variabla standarde dhe aplikacioni juaj do të jetë i aksesueshëm nëpërmjet shfletuesit (websocket) ose VNC. Në rastin tonë, ne do të nisemi përmes Firefox-it dhe VNC-së; ai nuk funksionoi përmes websocket-it.
Së pari, le të instalojmë paketat e nevojshme - Java 6 dhe 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

Tani gjithçka që duhet të bëni është të shkoni në faqen e ndërfaqes së ILO-s dhe të shkruani emrin e përdoruesit dhe fjalëkalimin tuaj. Hapni Firefox-in në fillimin automatik:

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

Variabli i mjedisit HILO_HOST përmban adresën e internetit të ndërfaqes sonë të ILO-s, për shembull myhp.example.com
Për të automatizuar hyrjen, le të shtojmë autorizimin. Hyrja në ILO ndodh me një kërkesë të rregullt POST, si rezultat i së cilës ju merrni një çelës sesioni JSON, të cilin më pas e kaloni në një kërkesë GET:
Le të llogarisim sesionin_key nëpërmjet curl nëse janë përcaktuar variablat e mjedisit HILO_USER dhe 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

Pasi të kemi regjistruar sesionin_key në docker, ne mund të nisim VNC:

exec x11vnc -forever -create

Tani ne thjesht lidhemi nëpërmjet VNC me portin 5900 (ose ndonjë tjetër sipas zgjedhjes suaj) në localhost dhe shkojmë në tastierën virtuale.
I gjithë kodi është në depo doker-ilo-klient.
Komanda e plotë për t'u lidhur me 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

ku ADDRESS_OF_YOUR_HOST është emri i hostit të ILO, SOME_USERNAME është identifikimi dhe, në përputhje me rrethanat, SOME_PASSWORD fjalëkalimi për ILO.
Pas kësaj, thjesht nisni çdo klient VNC në adresën: vnc://localhost:5900
Shtesat dhe kërkesat për tërheqje janë, natyrisht, të mirëseardhura.

Një projekt i ngjashëm ekziston për lidhjen me ndërfaqet IDRAC të makinerive DELL: doker-idrac6.

Burimi: www.habr.com

Shto një koment