Docker-container voor het beheer van HP-servers via ILO

Je vraagt ​​je waarschijnlijk af: waarom bestaat Docker hier? Wat is het probleem met inloggen op de ILO-webinterface en het instellen van uw server indien nodig?
Dat dacht ik ook toen ze me een paar oude onnodige servers gaven die ik opnieuw moest installeren (wat herinrichting wordt genoemd). De server zelf bevindt zich in het buitenland, het enige dat beschikbaar is, is de webinterface. Welnu, dienovereenkomstig moest ik naar de virtuele console gaan om enkele opdrachten uit te voeren. Dat is waar het begon.
Zoals u weet, wordt Java meestal gebruikt voor verschillende soorten virtuele consoles, zowel bij HP als bij Dell. Zo was het tenminste (en de systemen zijn erg oud). Maar Firefox en Chrome ondersteunen deze applets al lang niet meer, en de nieuwe IcedTea werkt niet met deze systemen. Daarom kwamen er verschillende opties naar voren:

1. Begin met het bouwen van een dierentuin vanuit browsers en Java-versies op uw computer, deze optie was niet langer nodig. Er is geen wens om het systeem te bespotten omwille van een paar commando's.
2. Start iets heel ouds op de virtuele machine (experimenteel bleek dat je Java 6 nodig hebt) en configureer daarmee alles wat je nodig hebt.
3. Hetzelfde als punt 2, alleen in een container, aangezien meerdere collega's hetzelfde probleem tegenkwamen en het veel gemakkelijker is om ze een link naar een container op Dockerhub over te zetten dan een virtuele machine-image, met alle wachtwoorden, enz.
(Eigenlijk kwam ik pas bij punt 3 nadat ik punt 2 had gedaan)
Vandaag gaan we punt 3 doen.

Ik werd vooral geïnspireerd door twee projecten:
1. docker-baseimage-gui
2. docker-firefox-java
Eigenlijk het eerste project docker-baseimage-gui bevat al hulpprogramma's en configuraties voor het uitvoeren van desktopapplicaties in Docker. Meestal moet u standaardvariabelen definiëren en is uw applicatie toegankelijk via een browser (websocket) of VNC. In ons geval starten we via Firefox en VNC; het werkte niet via websocket.
Laten we eerst de benodigde pakketten installeren - Java 6 en 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 hoeft u alleen nog maar naar de ILO-interfacepagina te gaan en uw gebruikersnaam en wachtwoord in te voeren. Start Firefox in automatisch starten:

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

De omgevingsvariabele HILO_HOST bevat bijvoorbeeld het webadres van onze ILO-interface mijnhp.voorbeeld.com
Laten we autorisatie toevoegen om het inloggen te automatiseren. Inloggen bij ILO gebeurt met een regulier POST-verzoek, waardoor u een JSON session_key ontvangt, die u vervolgens doorgeeft in een GET-verzoek:
Laten we session_key berekenen via curl als de omgevingsvariabelen HILO_USER en HILO_PASS zijn gedefinieerd:

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

Zodra we de session_key in docker hebben vastgelegd, kunnen we VNC uitvoeren:

exec x11vnc -forever -create

Nu maken we eenvoudigweg via VNC verbinding met poort 5900 (of een andere naar keuze) op localhost en gaan naar de virtuele console.
Alle code bevindt zich in de repository docker-ilo-client.
Volledige opdracht om verbinding te maken met 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

waarbij ADDRESS_OF_YOUR_HOST de ILO-hostnaam is, SOME_USERNAME de login is en, dienovereenkomstig, SOME_PASSWORD het wachtwoord voor ILO.
Start daarna eenvoudigweg een VNC-client op het adres: vnc://localhost:5900
Aanvullingen en pull-requests zijn uiteraard welkom.

Er bestaat een soortgelijk project voor verbinding met IDRAC-interfaces van DELL-machines: docker-idrac6.

Bron: www.habr.com

Voeg een reactie