Docker-container for å administrere HP-servere via ILO

Du kan kanskje lure på — hvorfor Docker her? Hva er problemet med å gå til webgrensesnittet til ILO og konfigurere serveren din som den skal?
Det tenkte jeg også da jeg fikk servert noen gamle, uønskede servere som jeg måtte reinstalle (det som kalles reprovision). Serverne ligger over havet, og det eneste tilgjengelige er webgrensesnittet. Jeg måtte dermed få tilgang til Virtual Console for å utføre noen kommandoer. Og her begynte det.
Som kjent brukes det vanligvis Java for ulike typer virtuelle konsoller, både hos HP og Dell. I hvert fall gjorde det det før (og systemene er veldig gamle). Men Firefox og Chrome har lenge sluttet å støtte disse applet-ene, og den nye IcedTea fungerer ikke med disse systemene. Derfor dukket det opp flere alternativer:

1. Begynne å konstruere et zootek av nettlesere og Java-versjoner på maskinen min, men det alternativet ble kansellert umiddelbart. Jeg har ingen lyst til å plage systemet for en håndfull kommandoer.
2. Kjør noe gammelt på en virtuell maskin (erfaringsmessig viser det seg at Java 6 er nødvendig) og konfigurere alt som trengs gjennom det.
3. Samme som punkt 2, men i en container, siden flere kolleger har støtt på det samme problemet, og det er mye lettere å gi dem lenken til containeren på dockerhub enn et bilde av den virtuelle maskinen, med alle passordene osv.
(Faktisk kom jeg til punkt 3 først etter at jeg hadde fullført punkt 2)
Punkt 3 skal vi gjøre i dag.

Jeg er hovedsakelig inspirert av to prosjekter:
1. docker-baseimage-gui
2. docker-firefox-java
I prinsippet inneholder det første prosjektet docker-baseimage-gui allerede verktøy og konfigurasjoner for å kjøre skrivebordsapplikasjoner i Docker. Vanligvis må du definere standardvariabler, og applikasjonen din vil være tilgjengelig via nettleser (websocket) eller VNC. I vårt tilfelle vil vi kjøre gjennom Firefox og VNC; det fungerte ikke via websocket.
Først installerer vi de nødvendige pakkene — Java 6 og IcedTea:

KJER 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

Nå er det bare å gå til ILO-grensesnittet og skrive inn brukernavn og passord. Vi starter Firefox automatisk:

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

Miljøvariabelen HILO_HOST inneholder nettadressen til ILO-grensesnittet vårt, for eksempel myhp.example.com
For å automatisere innloggingen, la oss bruke autorisasjon. Innloggingen til ILO skjer med en vanlig POST-forespørsel, som resulterer i at du får en JSON session_key, som så sendes i GET-forespørselen:
Vi regner ut session_key med curl, hvis miljøvariablene HILO_USER og HILO_PASS er definert:

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 skrevet session_key i Docker, kan vi starte VNC:

exec x11vnc -forever -create

Nå kobler vi oss enkelt til VNC på port 5900 (eller en annen etter eget valg) på localhost og får tilgang til den virtuelle konsollen.
Hele koden er tilgjengelig i depotet docker-ilo-client.
Full kommando for å koble til 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

hvor ADDRESS_OF_YOUR_HOST er ILO-vertsnavnet, SOME_USERNAME er brukernavnet, og SOME_PASSWORD er passordet til ILO.
Etter dette starter du bare hvilken som helst VNC-klient på adressen: vnc://localhost:5900
Tillegg og pull-forespørsel er selvfølgelig velkomne.

Et lignende prosjekt eksisterer for tilkobling til IDRAC-grensesnitt på DELL-maskiner: docker-idrac6.

Kilde: habr.com

Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere 🔥 Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere | ProHoster