Docker kontejner za upravljanje HP serverima putem ILO-a

Možda se pitate – zašto je Docker ovdje? Koji je problem sa pristupom web interfejsu ILO-a i pravilnom konfiguracijom servera?
Pa sam pomislio kada su mi dali par starih nepotrebnih servera koje moram ponovo instalirati (što se zove reprovision). Sami serveri su u inostranstvu, jedino što je dostupno je web interfejs. Pa, shodno tome, morao sam da odem na virtuelnu konzolu da izvršim neke komande. Ovdje je počelo.
Kao što znate, za razne vrste virtuelnih konzola obično se koristi Java, kako u HP-u tako iu Dellu. U svakom slučaju, nekada je tako sigurno bilo (a sistemi su jako stari). Ali Firefox i Chrome odavno su prestali da podržavaju ove aplete, a novi IcedTea ne radi sa ovim sistemima. Stoga je bilo nekoliko opcija:

1. Počnite da pravite zoološki vrt iz pretraživača i Java verzija na vašoj mašini, ova opcija je odmah nestala. Nema želje da se sistem ruga zarad par komandi.
2. Pokrenite nešto prilično staro na virtuelnoj mašini (eksperimentalno se pokazalo da je potrebna Java 6) i preko nje konfigurišite sve što vam treba.
3. Isto kao i tačka 2, samo u kontejneru, pošto se nekoliko kolega suočilo sa istim problemom i mnogo lakše im je poslati link ka kontejneru na dockerhub nego sliku virtuelne mašine sa svim lozinkama itd.
(U stvari, došao sam do tačke 3 tek nakon što sam uradio tačku 2)
Tačku 3 ćemo uraditi danas.

Inspirisala su me uglavnom dva projekta:
1. docker-baseimage-gui
2. docker-firefox-java
U osnovi prvi projekat docker-baseimage-gui već sadrži uslužne programe i konfiguracije za pokretanje desktop aplikacija u Docker-u. Obično morate definisati standardne varijable i vaša aplikacija će biti dostupna preko pretraživača (websocket) ili VNC. U našem slučaju ćemo raditi kroz Firefox i VNC, nije funkcionisalo preko websocketa.
Prvo instalirajte 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 ostaje da odete na stranicu interfejsa ILO-a i unesete 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 web adresu našeg ILO sučelja, na primjer myhp.example.com
Da automatizujemo prijavu, pričvrstimo autorizaciju. Prijava u ILO se odvija sa redovnim POST zahtjevom, kao rezultat toga dobijate JSON session_key, koji zatim prosljeđujete u GET zahtjevu:
Izračunajte session_key preko curl-a 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 docker, možemo pokrenuti VNC:

exec x11vnc -forever -create

Sada se samo povezujemo preko VNC-a na port 5900 (ili bilo koji drugi po vašem izboru) na lokalnom hostu i idemo na virtuelnu konzolu.
Sav kod je u spremištu docker-ilo-client.
Potpuna komanda za povezivanje na 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

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

Sličan projekat postoji za povezivanje na IDRAC interfejse DELL mašina: docker-idrac6.

izvor: www.habr.com

Dodajte komentar