Možda se pitate — zašto ovdje Docker? Koji je problem u pristupanju web sučelju ILO i podešavanju svog servera kako treba?
I ja sam tako mislio kada su mi dali nekoliko starih, nepotrebnih servera koje sam trebao reinstalirati (tzv. reprovision). Serveri se nalaze preko oceana, a jedina stvar koja mi je dostupna je web sučelje. Pa, naravno, morao sam pristupiti Virtual Console za izvršenje nekih komandi. Tada je sve počelo.
Kao što je poznato, za razne vrste virtualnih konzola obično se koristi Java, bilo da je riječ o HP-u ili Dellu. U svakom slučaju, prije je to svakako bio slučaj (s obzirom da su sustavi jako stari). No, Firefox i Chrome su već odavno prestali podržavati te aplet-e, a ni novi IcedTea ne radi s tim sustavima. Zato se pojavila nekoliko opcija:
1. Početi konstruirati zoološki vrt od preglednika i verzija Jave na svom računalu, ta opcija je odmah otpala. Nemam želju mučiti sustav zbog nekoliko komandi.
2. Pokrenuti na virtualnoj mašini nešto dovoljno staro (putem eksperimentalnog postupka otkrio sam da je potrebna Java 6) i kroz nju konfigurisati sve što treba.
3. Isto što i točka 2, samo u kontejneru, jer su se s istim problemom suočili i neki kolege i mnogo je lakše poslati im vezu na kontejner na dockerhubu nego na sliku virtualke, sa svim lozinkama itd.
(Zapravo, do točke 3 sam došao tek nakon što sam napravio točku 2)
U ovoj točki 3 ćemo i raditi danas.
Uglavnom, inspiraciju sam crpio iz dva projekta:
1.
2.
Prvi projekt u osnovi već sadrži alate i konfiguracije za pokretanje desktop aplikacija u Dockera. Obično trebate definirati standardne varijable i vaša aplikacija će biti dostupna putem preglednika (websocket) ili VNC-a. U našem slučaju ćemo pokretati putem Firefoxa i VNC-a, preko websocket-a nije uspjelo.
Prvo ćemo instalirati potrebne pakete — Java 6 i 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
Sada samo trebamo pristupiti stranici ILO sučelja i unijeti svoje korisničko ime i zaporku. Pokrećemo Firefox u auto pokretanju:
RUN bash -c 'echo "exec openbox-session &" >> ~/ .xinitrc' &&
bash -c 'echo "firefox ${HILO_HOST}" >> ~/ .xinitrc' &&
bash -c 'chmod 755 ~/ .xinitrc'
Varijabla okruženja HILO_HOST sadrži web adresu našeg ILO sučelja, na primjer
Za automatizaciju prijave dodajmo autorizaciju. Prijava u ILO događa se običnim POST zahtjevom, nakon kojeg dobivate JSON session_key, koji se kasnije prosljeđuje u GET zahtjevu:
Izračunajmo session_key putem curl-a, ako su definirane varijable okoline HILO_USER i 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
Nakon što smo zapisali session_key u Dockeru, možemo pokrenuti VNC:
exec x11vnc -forever -create
Sada se jednostavno povežite putem VNC-a na port 5900 (ili bilo koji drugi po vašem izboru) na localhostu i uđite u virtualnu konzolu.
Sav kod se nalazi u repozitoriju .
Puna komanda za povezivanje s 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
gdje je ADDRESS_OF_YOUR_HOST naziv ILO hosta, SOME_USERNAME — prijava, a odgovarajući SOME_PASSWORD lozinka za ILO.
Nakon toga jednostavno pokrenite bilo kojeg VNC klijenta na adresi: vnc://localhost:5900
Dodaci i pull zahtjevi, naravno, dobrodošli su.
Sličan projekt postoji za povezivanje s IDRAC sučeljima DELL mašina: .
Izvor: habr.com
