Docker-behållare för hantering av HP-servrar via ILO

Du kanske undrar - varför finns Docker här? Vad är problemet med att logga in i ILO:s webbgränssnitt och ställa in din server efter behov?
Det var vad jag tänkte när de gav mig ett par gamla onödiga servrar som jag behövde installera om (det som kallas omprovision). Själva servern är belägen utomlands, det enda som är tillgängligt är webbgränssnittet. Tja, följaktligen var jag tvungen att gå till den virtuella konsolen för att köra några kommandon. Det var där det började.
Som du vet används Java vanligtvis för olika typer av virtuella konsoler, oavsett om det är i HP eller Dell. Åtminstone var det så det brukade vara (och systemen är väldigt gamla). Men Firefox och Chrome slutade stödja dessa appletar för länge sedan, och nya IcedTea fungerar inte med dessa system. Därför dök flera alternativ upp:

1. Börja bygga ett zoo från webbläsare och Java-versioner på din maskin, det här alternativet behövdes inte längre. Det finns ingen önskan att håna systemet för ett par kommandons skull.
2. Starta något ganska gammalt på den virtuella maskinen (det visade sig experimentellt att du behöver Java 6) och konfigurera allt du behöver genom den.
3. Samma som punkt 2, bara i en container, eftersom flera kollegor stött på samma problem och det är mycket lättare att överföra dem en länk till en container på Dockerhub än en virtuell maskinavbildning, med alla lösenord osv.
(Jag kom faktiskt först till punkt 3 efter att jag gjorde punkt 2)
Vi ska göra punkt 3 idag.

Jag inspirerades främst av två projekt:
1. docker-baseimage-gui
2. docker-firefox-java
I princip det första projektet docker-baseimage-gui innehåller redan verktyg och konfigurationer för att köra skrivbordsprogram 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 starta via Firefox och VNC; det fungerade inte via websocket.
Låt oss först installera 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 behöver du bara gå till ILO-gränssnittssidan och ange ditt användarnamn och lösenord. Starta Firefox i autostart:

RUN 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 till exempel webbadressen till vårt ILO-gränssnitt myhp.example.com
För att automatisera inloggningen, låt oss lägga till auktorisering. Inloggning till ILO sker med en vanlig POST-begäran, som ett resultat av vilken du får en JSON session_key, som du sedan skickar i en GET-begäran:
Låt oss beräkna session_key via 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 spelat in session_key i docker, kan vi starta VNC:

exec x11vnc -forever -create

Nu ansluter vi helt enkelt via VNC till port 5900 (eller någon annan av ditt val) på localhost och går till den virtuella konsolen.
All kod finns i förvaret hamnarbetare-ilo-klient.
Fullständigt kommando 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 ILO-värdnamnet, SOME_USERNAME är inloggningen och, följaktligen, SOME_PASSWORD lösenordet för ILO.
Efter det, starta helt enkelt valfri VNC-klient till adressen: vnc://localhost:5900
Tillägg och pull-förfrågningar är naturligtvis välkomna.

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

Källa: will.com

Lägg en kommentar