Docker-kontener foar it behearen fan HP-tsjinners fia ILO

Jo kinne jo miskien ôffreegje - wêrom bestiet Docker hjir? Wat is it probleem mei it oanmelden yn 'e ILO-webynterface en it ynstellen fan jo server as nedich?
Dat tocht ik doe't se my in pear âlde ûnnedige tsjinners joegen dy't ik opnij ynstalleare moast (wat hjit reprovision). De tsjinner sels leit yn it bûtenlân, it ienige beskikbere is de webynterface. No, dêrom moast ik nei de Virtual Console gean om wat kommando's út te fieren. Dêr begûn it.
Lykas jo witte, wurdt Java normaal brûkt foar ferskate soarten firtuele konsoles, itsij yn HP as Dell. Alteast sa wie it eartiids (en de systemen binne hiel âld). Mar Firefox en Chrome stopten dizze applets in lange tiid lyn te stypjen, en de nije IcedTea wurket net mei dizze systemen. Dêrom ûntstiene ferskate opsjes:

1. Begjin mei it bouwen fan in bistetún fan browsers en Java-ferzjes op jo masine, dizze opsje wie net mear nedich. D'r is gjin winsk om it systeem te bespotten om 'e wille fan in pear kommando's.
2. Launch wat frij âld op 'e firtuele masine (it die bliken eksperiminteel dat jo nedich Java 6) en konfigurearje alles wat jo nedich hawwe troch it.
3. Itselde as punt 2, allinnich yn in kontener, sûnt ferskate kollega tsjinkaam itselde probleem en it is folle makliker te oerdrage se in keppeling nei in kontener op Dockerhub as in firtuele masine ôfbylding, mei alle wachtwurden, etc.
(Eins kaam ik pas by punt 3 nei't ik punt 2 dien haw)
Wy sille hjoed punt 3 dwaan.

Ik waard benammen ynspirearre troch twa projekten:
1. docker-baseimage-gui
2. docker-firefox-java
Yn prinsipe it earste projekt docker-baseimage-gui befettet al nutsbedriuwen en konfiguraasjes foar it útfieren fan buroblêdapplikaasjes yn Docker. Typysk moatte jo standertfariabelen definiearje en jo applikaasje sil tagonklik wêze fia browser (websocket) of VNC. Yn ús gefal sille wy starte fia Firefox en VNC; it wurke net fia websocket.
Litte wy earst de nedige pakketten ynstallearje - Java 6 en 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

No alles wat jo hoege te dwaan is nei de ILO-ynterface-side te gean en jo brûkersnamme en wachtwurd yn te fieren. Start Firefox yn autostart:

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

De omjouwingsfariabele HILO_HOST befettet bygelyks it webadres fan ús ILO-ynterface myhp.example.com
Om de oanmelding te automatisearjen, litte wy autorisaasje tafoegje. Oanmelde by ILO komt foar mei in reguliere POST-fersyk, as gefolch wêrfan jo in JSON session_key krije, dy't jo dan in GET-fersyk trochjaan:
Litte wy session_key fia curl berekkenje as de HILO_USER en HILO_PASS omjouwingsfariabelen binne definiearre:

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

Ienris hawwe wy de session_key yn docker opnommen, kinne wy ​​​​VNC útfiere:

exec x11vnc -forever -create

No ferbine wy ​​gewoan fia VNC oan haven 5900 (of in oare fan jo kar) op localhost en gean nei de firtuele konsole.
Alle koade is yn 'e repository docker-ilo-kliïnt.
Folsleine kommando om te ferbinen mei 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

wêrby ADDRESS_OF_YOUR_HOST de ILO-hostnamme is, SOME_USERNAME de oanmelding is en dus SOME_PASSWORD it wachtwurd foar ILO.
Start dan gewoan elke VNC-kliïnt nei it adres: vnc://localhost:5900
Tafoegings en pull-oanfragen binne fansels wolkom.

In ferlykber projekt bestiet foar ferbining mei IDRAC-ynterfaces fan DELL-masines: docker-idrac6.

Boarne: www.habr.com

Add a comment