Docker-container för att hantera HP-servrar via ILO

Du kanske undrar — varför Docker hĂ€r? Vad Ă€r problemet med att gĂ„ in pĂ„ webbgrĂ€nssnittet för ILO och konfigurera din server som du vill?
Det tÀnkte jag ocksÄ nÀr jag fick ett par gamla servers som jag behövde installera om (det som kallas reprovision). Servrarna finns pÄ andra sidan havet, det enda som Àr tillgÀngligt Àr webbgrÀnssnittet. Och sjÀlvklart behövde jag gÄ in i Virtual Console för att utföra vissa kommandon. HÀr började problemen.
Som kÀnt anvÀnds vanligtvis Java för olika typer av virtuella konsoler, bÄde för HP och Dell. I varje fall var det sÄ tidigare (och systemen Àr mycket gamla). Men Firefox och Chrome har lÀnge slutat stödja dessa appletar, och den nya IcedTea fungerar inte med dessa system. DÀrför fanns det nÄgra alternativ:

1. Börja konstruera ett zoo av webblÀsare och Java-versioner pÄ min dator, vilket alternativ försvann direkt. Jag har ingen lust att plÄga systemet för att köra nÄgra kommandon.
2. Köra nÄgot tillrÀckligt gammalt pÄ en virtuell maskin (det visade sig att Java 6 behövdes) och konfigurera allt som behövs via den.
3. Samma sak som punkt 2, men i en container, eftersom flera kollegor stött pÄ samma problem, och det Àr mycket lÀttare att skicka dem en lÀnk till containern pÄ dockerhub Àn att ge dem en virtuell maskinbild, med alla lösenord etc.
(I sjÀlva verket kom jag till punkt 3 först efter att ha genomfört punkt 2)
Punkt 3 kommer vi att genomföra idag.

Jag blev frÀmst inspirerad av tvÄ projekt:
1. docker-baseimage-gui
2. docker-firefox-java
I princip innehÄller det första projektet docker-baseimage-gui redan verktyg och konfigurationer för att köra skrivbordsapplikationer i Docker. Vanligtvis behöver du definiera standardvariabler, och din applikation kommer att vara tillgÀnglig via webblÀsare (websocket) eller VNC. I vÄrt fall kommer vi att köra via Firefox och VNC, websocket fungerade inte.
Först installerar vi de nödvĂ€ndiga paketen — Java 6 och 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

Nu ÄterstÄr det att gÄ till sidan för ILO-grÀnssnittet och ange ditt anvÀndarnamn och lösenord. Vi startar Firefox automatiskt:

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

Miljövariabeln HILO_HOST innehÄller webbadressen till vÄrt ILO-grÀnssnitt, till exempel myhp.example.com
För att automatisera inloggningen, lÄt oss lÀgga till autentisering. Inloggningen i ILO görs med en vanlig POST-förfrÄgan, vilket ger dig en JSON session_key, som du sedan skickar i GET-förfrÄgan:
BerÀkna session_key genom curl, om miljövariablerna HILO_USER och HILO_PASS Àr definierade:

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

NĂ€r vi har skrivit session_key i Docker kan vi starta VNC:

exec x11vnc -forever -create

Anslut nu enkelt via VNC till port 5900 (eller valfri annan) pÄ localhost och gÄ in i den virtuella konsolen.
All kod finns i förvaret docker-ilo-client.
Den fullstÀndiga kommandon för att ansluta till 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

dÀr ADDRESS_OF_YOUR_HOST Àr namnet pÄ ILO-vÀrden, SOME_USERNAME Àr inloggningen och motsvarande SOME_PASSWORD Àr lösenordet till ILO.
Efter det startar du helt enkelt vilken VNC-klient som helst pÄ adressen: vnc://localhost:5900
Bidrag och pull-förfrÄgningar vÀlkomnas, sÄklart.

Ett liknande projekt finns för att ansluta till IDRAC-grÀnssnitt pÄ DELL-maskiner: docker-idrac6.

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster