Docker-beholder for å administrere HP-servere via ILO

Du lurer kanskje på – hvorfor eksisterer Docker her? Hva er problemet med å logge på ILOs nettgrensesnitt og sette opp serveren etter behov?
Det var det jeg tenkte da de ga meg et par gamle unødvendige servere som jeg trengte å installere på nytt (det som kalles reprovision). Selve serveren er lokalisert i utlandet, det eneste tilgjengelige er nettgrensesnittet. Vel, følgelig måtte jeg gå til den virtuelle konsollen for å kjøre noen kommandoer. Det var der det startet.
Som du vet, brukes Java vanligvis til ulike typer virtuelle konsoller, enten det er i HP eller Dell. I det minste var det slik det pleide å være (og systemene er veldig gamle). Men Firefox og Chrome sluttet å støtte disse appletene for lenge siden, og den nye IcedTea fungerer ikke med disse systemene. Derfor dukket det opp flere alternativer:

1. Begynn å bygge en dyrehage fra nettlesere og Java-versjoner på maskinen din, dette alternativet var ikke lenger nødvendig. Det er ikke noe ønske om å håne systemet av hensyn til et par kommandoer.
2. Start noe ganske gammelt på den virtuelle maskinen (det viste seg eksperimentelt at du trenger Java 6) og konfigurer alt du trenger gjennom den.
3. Samme som punkt 2, bare i en container, siden flere kolleger har støtt på det samme problemet og det er mye lettere å overføre dem en lenke til en container på Dockerhub enn et virtuell maskinbilde, med alle passordene osv.
(Faktisk kom jeg først til punkt 3 etter at jeg gjorde punkt 2)
Vi skal gjøre punkt 3 i dag.

Jeg ble hovedsakelig inspirert av to prosjekter:
1. docker-baseimage-gui
2. docker-firefox-java
I utgangspunktet det første prosjektet docker-baseimage-gui inneholder 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 starte via Firefox og VNC; det fungerte ikke via websocket.
Først, la oss installere de nødvendige pakkene - Java 6 og 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

Nå er alt du trenger å gjøre å gå til ILO-grensesnittsiden og skrive inn brukernavn og passord. Start Firefox i autostart:

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

Miljøvariabelen HILO_HOST inneholder for eksempel nettadressen til vårt ILO-grensesnitt myhp.example.com
For å automatisere påloggingen, la oss legge til autorisasjon. Innlogging til ILO skjer med en vanlig POST-forespørsel, som et resultat av at du mottar en JSON session_key, som du deretter sender i en GET-forespørsel:
La oss beregne session_key via 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 registrert session_key i docker, kan vi kjøre VNC:

exec x11vnc -forever -create

Nå kobler vi ganske enkelt via VNC til port 5900 (eller hvilken som helst annen du ønsker) på localhost og går til den virtuelle konsollen.
All kode er i depotet docker-ilo-klient.
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

der ADDRESS_OF_YOUR_HOST er ILO-vertsnavnet, SOME_USERNAME er påloggingsinformasjonen og følgelig SOME_PASSWORD passordet for ILO.
Etter det starter du bare en hvilken som helst VNC-klient til adressen: vnc://localhost:5900
Tillegg og pull-forespørsler er selvfølgelig velkomne.

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

Kilde: www.habr.com

Legg til en kommentar