Určite sa pýtate, čo tu má Docker? Aký je problém dostať sa na webové rozhranie ILO a nastaviť svoj server tak, ako to treba?
Tak som aj ja rozmýšľal, keď mi dali pár starých nepotrebných serverov, ktoré som musel reinstalovať (čo sa nazýva reprovision). Servery sú za oceanom, jediná vec, ktorá je dostupná, je webové rozhranie. No a samozrejme som sa musel dostať do Virtuálnej konzoly na vykonanie niekoľkých príkazov. A tu to začalo.
Ako je známe, pre rôzne druhy virtuálnych konzol sa obyčajne používa Java, či už v HP alebo v Dell. V každom prípade to tak bolo dávno (a systémy sú veľmi staré). Ale Firefox a Chrome už dávno prestali podporovať tieto applete, a ani nový IcedTea nefunguje s týmito systémami. Preto sa objavili niektoré možnosti:
1. Začať konštruovať zverinec z prehliadačov a verzií Java na svojom počítači, táto možnosť okamžite odpadla. Nikoho nezaujíma mučiť systém kvôli pár príkazom.
2. Spustiť na virtuálnej mašine niečo dostatočne staré (skúsenosťou sa zistilo, že potrebujete Java 6) a cez ňu nakonfigurovať všetko, čo potrebujete.
3. To isté ako bod 2, len v kontajneri, pretože rovnaký problém mali niektorí kolegovia a oveľa ľahšie je poslať im odkaz na kontajner na dockerhub než obraz virtuálnej mašiny so všetkými heslami atď.
(V skutočnosti som sa k bodu 3 dostal až po tom, čo som vykonal bod 2.)
Dnes urobíme bod 3.
Inšpiroval som sa hlavne dvoma projektmi:
1.
2.
V podstate prvý projekt už obsahuje nástroje a konfigurácie na spustenie desktopových aplikácií v Dockeri. Zvyčajne musíte definovať štandardné premenné a vaša aplikácia bude dostupná cez prehliadač (websocket) alebo VNC. V našom prípade spustíme cez Firefox a VNC, cez websocket sa nám to nepodarilo.
Najprv nainštalujeme 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 už len treba ísť na stránku rozhrania ILO a zadať svoje prihlasovacie údaje. Spúšťame Firefox v automatickom štarte:
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 webovú adresu nášho rozhrania ILO, napríklad
Na automatizáciu prihlásenia pripojíme autorizáciu. Prihlásenie do ILO prebieha obyčajným POST požiadavkom, ako výsledok dostanete JSON session_key, ktorý potom posielate v GET požiadavke:
Vypočítame session_key pomocou curl, ak sú definované premenne 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
Potom, čo sme uložili session_key v Dockeri, 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 vstúpime do virtuálnej konzoly.
Celý kód sa nachádza v repozitári .
Celý 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 — prihlasovacie meno a samozrejme SOME_PASSWORD je heslo k ILO.
Potom jednoducho spustíte akýkoľvek VNC klient na adrese: vnc://localhost:5900
Príspevky a pull requesty sú samozrejme vítané.
Podobný projekt existuje pre pripojenie k IDRAC rozhraniam DELL strojov: .
Zdroj: habr.com
