Docker konténer HP szerverek ILO-n keresztüli kezelésére

Valószínűleg azon töpreng, miért létezik itt a Docker? Mi a probléma az ILO webes felületére való bejelentkezéssel és a szerver szükség szerinti beállításával?
Erre gondoltam, amikor adtak pár régi, szükségtelen szervert, amiket újra kellett telepítenem (úgy hívják, hogy reprovision). Maga a szerver a tengerentúlon található, csak a webes felület áll rendelkezésre. Nos, ennek megfelelően a Virtuális konzolra kellett mennem néhány parancs futtatásához. Ott kezdődött.
Mint tudják, a Java-t általában különféle virtuális konzolokhoz használják, akár a HP-ban, akár a Dellben. Legalábbis régen így volt (és a rendszerek nagyon régiek). A Firefox és a Chrome azonban már régen leállította ezeknek a kisalkalmazásoknak a támogatását, és az új IcedTea nem működik ezekkel a rendszerekkel. Ezért több lehetőség is felmerült:

1. Kezdje el az állatkert felépítését böngészőkből és Java verziókból a gépén, erre az opcióra már nem volt szükség. Nincs kedvünk kigúnyolni a rendszert egy-két parancs kedvéért.
2. Indíts el valami egészen régit a virtuális gépen (kísérletileg kiderült, hogy Java 6 kell) és azon keresztül állíts be mindent, ami kell.
3. Ugyanaz, mint a 2. pont, csak konténerben, mivel több kolléga is találkozott ugyanazzal a problémával, és sokkal egyszerűbb átvinni nekik egy linket egy Dockerhubon lévő konténerre, mint egy virtuális gép képét, az összes jelszóval stb.
(Valójában csak a 3. pont után jutottam el a 2. pontig)
Ma megtesszük a 3. pontot.

Főleg két projekt inspirált:
1. docker-baseimage-gui
2. docker-firefox-java
Lényegében az első projekt docker-baseimage-gui már tartalmaz segédprogramokat és konfigurációkat az asztali alkalmazások futtatásához a Dockerben. Általában szabványos változókat kell megadnia, és az alkalmazás böngészőn (websocket) vagy VNC-n keresztül érhető el. Esetünkben Firefoxon és VNC-n keresztül fogunk indítani, websocketen keresztül nem működött.
Először telepítsük a szükséges csomagokat - Java 6 és 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

Most már csak az ILO felület oldalára kell lépnie, és megadnia felhasználónevét és jelszavát. Indítsa el a Firefoxot automatikus indításkor:

RUN 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 például az ILO felületünk webcímét myhp.example.com
A bejelentkezés automatizálásához adjunk hozzá jogosultságot. Az ILO-ba való bejelentkezés egy szokásos POST-kéréssel történik, aminek eredményeként kap egy JSON session_key-t, amelyet aztán egy GET-kérésben továbbít:
Számítsuk ki a session_key értéket curl segítségével, ha a HILO_USER és a HILO_PASS környezeti változók definiáltak:

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 rögzítettük a session_key-t a dockerben, elindíthatjuk a VNC-t:

exec x11vnc -forever -create

Most egyszerűen csatlakozunk VNC-n keresztül a localhost 5900-as portjához (vagy bármely más választott porthoz), és menjünk a virtuális konzolra.
Minden kód a tárolóban van dokkoló-ilo-kliens.
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épneve, a SOME_USERNAME a bejelentkezési név, és ennek megfelelően a SOME_PASSWORD az ILO jelszava.
Ezután egyszerűen indítsa el bármelyik VNC-klienst a következő címre: vnc://localhost:5900
A kiegészítéseket és a pull kéréseket természetesen szívesen fogadjuk.

Létezik egy hasonló projekt a DELL gépek IDRAC interfészeihez való csatlakozáshoz: docker-idrac6.

Forrás: will.com

Hozzászólás