Docker spremnik za upravljanje HP poslužiteljima putem ILO-a

Vjerojatno se pitate - zašto Docker postoji ovdje? Koji je problem s prijavom na web sučelje ILO-a i postavljanjem vašeg poslužitelja prema potrebi?
To sam mislio kad su mi dali nekoliko starih nepotrebnih servera koje sam trebao ponovno instalirati (što se zove reprovision). Sam poslužitelj se nalazi u inozemstvu, jedino što je dostupno je web sučelje. Pa, sukladno tome, morao sam otići na Virtualnu konzolu da pokrenem neke naredbe. Tu je počelo.
Kao što znate, Java se obično koristi za razne vrste virtualnih konzola, bilo u HP-u ili Dellu. Barem je tako bilo nekada (a sustavi su jako stari). Ali Firefox i Chrome su davno prestali podržavati ove applete, a novi IcedTea ne radi s tim sustavima. Stoga se pojavilo nekoliko opcija:

1. Počnite konstruirati zoološki vrt od preglednika i Java verzija na vašem računalu, ova opcija više nije bila potrebna. Nema želje za ismijavanjem sustava radi nekoliko naredbi.
2. Pokreni nešto dosta staro na virtualnom stroju (eksperimentalno se pokazalo da ti treba Java 6) i preko njega konfiguriraj sve što ti treba.
3. Isto kao točka 2, samo u kontejneru, jer je nekoliko kolega naišlo na isti problem i puno im je lakše prebaciti link na kontejner na Dockerhubu nego sliku virtualnog stroja, sa svim lozinkama itd.
(U stvari, došao sam do točke 3 tek nakon što sam napravio točku 2)
Danas ćemo raditi točku 3.

Inspirirala su me uglavnom dva projekta:
1. docker-baseimage-gui
2. docker-firefox-java
Uglavnom prvi projekt docker-baseimage-gui već sadrži uslužne programe i konfiguracije za pokretanje desktop aplikacija u Dockeru. Obično trebate definirati standardne varijable i vaša će aplikacija biti dostupna putem preglednika (websocket) ili VNC-a. U našem slučaju pokrenut ćemo preko Firefoxa i VNC-a; nije radilo preko websocketa.
Prvo instalirajmo potrebne pakete - Java 6 i 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

Sada sve što trebate učiniti je otići na stranicu sučelja ILO-a i unijeti svoje korisničko ime i lozinku. Pokrenite Firefox u automatskom pokretanju:

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

Varijabla okruženja HILO_HOST sadrži, na primjer, web adresu našeg ILO sučelja myhp.example.com
Kako bismo automatizirali prijavu, dodajmo autorizaciju. Prijava na ILO odvija se uobičajenim POST zahtjevom, kao rezultat toga dobivate JSON session_key, koji potom prosljeđujete u GET zahtjevu:
Izračunajmo session_key putem curla ako su definirane varijable okruženja HILO_USER i HILO_PASS:

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

Nakon što smo snimili session_key u dockeru, možemo pokrenuti VNC:

exec x11vnc -forever -create

Sada se jednostavno povezujemo putem VNC-a na port 5900 (ili bilo koji drugi po vašem izboru) na lokalnom hostu i idemo na virtualnu konzolu.
Sav kod je u repozitoriju docker-ilo-klijent.
Puna naredba za povezivanje s ILO-om:

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

gdje je ADDRESS_OF_YOUR_HOST ime hosta ILO-a, SOME_USERNAME je prijava i, prema tome, SOME_PASSWORD lozinka za ILO.
Nakon toga jednostavno pokrenite bilo koji VNC klijent na adresu: vnc://localhost:5900
Dodaci i zahtjevi za povlačenjem su, naravno, dobrodošli.

Postoji sličan projekt za povezivanje na IDRAC sučelja DELL strojeva: docker-idrac6.

Izvor: www.habr.com

Dodajte komentar