Docker kontajner na správu serverov HP cez ILO

Možno sa pýtate – prečo tu existuje Docker? Aký je problém s prihlásením sa do webového rozhrania ILO a nastavením servera podľa potreby?
To som si myslel, keď mi dali pár starých nepotrebných serverov, ktoré som potreboval preinštalovať (to, čo sa nazýva reprovision). Samotný server sa nachádza v zámorí, jediné, čo je k dispozícii, je webové rozhranie. Preto som musel prejsť do virtuálnej konzoly, aby som spustil nejaké príkazy. Tam to začalo.
Ako viete, Java sa zvyčajne používa pre rôzne druhy virtuálnych konzol, či už v HP alebo Dell. Aspoň tak to bývalo (a systémy sú veľmi staré). Firefox a Chrome však tieto applety prestali podporovať už dávno a nový IcedTea s týmito systémami nefunguje. Preto sa objavilo niekoľko možností:

1. Začnite budovať zoo z prehliadačov a verzií Java na vašom počítači, táto možnosť už nebola potrebná. Neexistuje žiadna túžba posmievať sa systému kvôli niekoľkým príkazom.
2. Spustite na virtuálnom stroji niečo dosť staré (experimentálne sa ukázalo, že potrebujete Java 6) a cez to nakonfigurujte všetko potrebné.
3. To isté ako bod 2, len v kontajneri, keďže viacerí kolegovia narazili na rovnaký problém a je oveľa jednoduchšie preniesť im odkaz na kontajner na Dockerhub ako obraz virtuálneho stroja, so všetkými heslami atď.
(V skutočnosti som sa k bodu 3 dostal až potom, čo som urobil bod 2)
Dnes urobíme bod 3.

Inšpirovali ma hlavne dva projekty:
1. docker-baseimage-gui
2. docker-firefox-java
V podstate prvý projekt docker-baseimage-gui už obsahuje nástroje a konfigurácie na spúšťanie desktopových aplikácií v Dockeri. Zvyčajne potrebujete definovať štandardné premenné a vaša aplikácia bude prístupná cez prehliadač (websocket) alebo VNC. V našom prípade spustíme cez Firefox a VNC, cez websocket to nefungovalo.
Najprv si nainštalujte potrebné balíčky - Java 6 a 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

Teraz všetko, čo musíte urobiť, je prejsť na stránku rozhrania ILO a zadať svoje používateľské meno a heslo. Spustite Firefox v automatickom spustení:

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

Premenná prostredia HILO_HOST obsahuje napríklad webovú adresu nášho rozhrania ILO myhp.example.com
Ak chcete automatizovať prihlásenie, pridajte autorizáciu. Prihlásenie do ILO prebieha s bežnou požiadavkou POST, v dôsledku čoho dostanete kľúč relácie JSON, ktorý potom odošlete v požiadavke GET:
Vypočítajme session_key cez curl, ak sú definované premenné prostredia HILO_USER a 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

Keď sme zaznamenali session_key v docker, môžeme spustiť VNC:

exec x11vnc -forever -create

Teraz sa jednoducho pripojíme cez VNC k portu 5900 (alebo akémukoľvek inému podľa vášho výberu) na localhost a prejdeme na virtuálnu konzolu.
Všetok kód je v úložisku docker-ilo-client.
Úplný príkaz na pripojenie k 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

kde ADDRESS_OF_YOUR_HOST je názov hostiteľa ILO, SOME_USERNAME je prihlasovacie meno a podľa toho SOME_PASSWORD heslo pre ILO.
Potom jednoducho spustite ľubovoľného klienta VNC na adresu: vnc://localhost:5900
Doplnky a požiadavky na stiahnutie sú, samozrejme, vítané.

Podobný projekt existuje na pripojenie k rozhraniam IDRAC počítačov DELL: docker-idrac6.

Zdroj: hab.com

Pridať komentár