Valószínűleg felmerül a kérdés — miért van itt Docker? Mi a probléma, hogy belépjünk az ILO webes felületére és beállítsuk a szervert, ahogy kell?
Én is így gondoltam, amikor átadtak nekem pár régi felesleges szervert, amelyeket újra kellett telepítenem (ami reprovisioning néven ismert). A szerverek az óceán túloldalán vannak, az egyetlen dolog, ami elérhető, a webes felület. Nos, és ennek megfelelően be kellett lépnem a Virtual Console-ba néhány parancs végrehajtásához. Itt kezdődött minden.
Ahogy ismert, különböző virtuális konzolokhoz általában Java-t használnak, akár HP, akár Dell. Legalábbis régen biztosan (a rendszerek nagyon régiek). De a Firefox és a Chrome régóta nem támogatják ezeket az appleteket, és az új IcedTea sem működik ezekkel a rendszerekkel. Ezért néhány lehetőség merült fel:
1. Kezdeni kell egy állatkert megépítését böngészőkből és Java verziókból a gépemen, de ez az opció azonnal elvetésre került. Nincs kedvem a rendszeren kínozni magam néhány parancs miatt.
2. Elindítani egy virtuális gépen valami elég régi dolgot (tapasztalatilag kiderült, hogy Java 6-ra van szükség) és azon keresztül konfigurálni minden szükségest.
3. Ugyanez, mint a 2. pont, csak konténerben, mivel több kollégám is hasonló problémával találkozott, és sokkal könnyebb nekik megosztani a Docker Hub-on található konténer linkjét, mint a virtuális gép képmásait, minden jelszóval stb.
(Valójában a 3. pontra csak azután jutottam, hogy a 2. pontot megcsináltam)
A 3. pontot fogjuk megcsinálni ma.
Főként két projektből inspirálódtam:
1.
2.
Alapvetően az első projekt már tartalmazza azokat az utilitásokat és konfigurációkat, amelyek lehetővé teszik asztali alkalmazások futtatását Dockerben. Általában meg kell határozni a standard változókat, és az alkalmazásod elérhető lesz böngészőn (websocket) vagy VNC-n keresztül. Az esetünkben a Firefox-t és VNC-t fogjuk futtatni, websocketen nem működött.
Először telepítjük a szükséges csomagokat — Java 6 és IcedTea:
Futtassa az echo-t "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
Most már csak be kell lépnünk az ILO felületére, és meg kell adnunk a felhasználónevünket és jelszavunkat. Elindítjuk a Firefox-ot automatikus indítással:
Futtassa a bash -c 'echo "exec openbox-session &" >> ~\/ .xinitrc' &&
bash -c 'echo "firefox ${HILO_HOST}">> ~\/ .xinitrc' &&
bash -c 'chmod 755 ~\/ .xinitrc'
A HILO_HOST környezeti változó tartalmazza az ILO felületünk webcímét, például
A bejelentkezés automatizálásához csatoljunk egy hitelesítést. Az ILO-ba való bejelentkezés egy szokásos POST kéréssel történik, amelynek eredményeként JSON session_key-t kapsz, amelyet később egy GET kérésben adsz meg:
Számítsuk ki a session_key-et curl segítségével, ha a HILO_USER és HILO_PASS környezeti változók be vannak állítva:
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
Miután beírtuk a session_key-et a dockerbe, elindíthatjuk a VNC-t:
exec x11vnc -forever -create
Most egyszerűen csatlakozzunk VNC-vel a 5900-as porthoz (vagy bármely más választott porthoz) a localhoston, és lépjünk be a virtuális konzolba.
A teljes kód a repóban található .
A teljes parancs az ILO-hoz való csatlakozáshoz:
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
ahol az ADDRESS_OF_YOUR_HOST az ILO gazdagép neve, a SOME_USERNAME a felhasználónév, míg a SOME_PASSWORD az ILO-hoz tartozó jelszó.
Ezután egyszerűen indíts el bármilyen VNC klienst a következő címen: vnc://localhost:5900
Kiegészítések és pull requestek természetesen szívesen látottak.
Hasonló projekt létezik a DELL gépek IDRAC interfészeinek csatlakozására: .
Forrás: habr.com
