Kontrakti Docker për menaxhimin e serverëve HP përmes ILO

Sigurisht, mund t'ju vijĂ« nĂ« mendje pyetja - pĂ«rse na nevojitet Docker kĂ«tu? ÇfarĂ« problemi ka pĂ«r tĂ« hyrĂ« nĂ« ndĂ«rfaqen web ILO dhe pĂ«r tĂ« konfiguruar serverin tuaj siç duhet?
Kështu mendova kur më dhanë disa serverë të vjetër të pavlefshëm, të cilët kishte nevojë t'i rinstaloja (çka quhet reprovision). Serverët ndodhen oqeanin përtej, gjëja e vetme që është e disponueshme është ndërfaqja web. Prandaj, duhet të hyja në Virtual Console për të ekzekutuar disa komanda. Atëherë filloi gjithçka.
Siç dihet, për një sërë virtualesh konsolash zakonisht përdoret Java, si për HP ashtu edhe për Dell. Sidoqoftë, më parë kështu ka qenë (dhe sistemet janë shumë të vjetra). Por Firefox dhe Chrome kohët e fundit kanë ndaluar mbështetje për këto apletë, dhe as IcedTea i ri nuk punon me këto sisteme. Prandaj, shfaqen disa mundësi:

1. Të fillojmë të ndërtomë një zoo me shfletues dhe versione Java në makinën time, kjo opsion u eliminua menjëherë. Nuk kam asnjë dëshirë të bëj eksperimente me sistemin për disa komanda.
2. Të nisim një virtuale që është mjaft e vjetër (në mënyrë empirike u zbulua se nevojitet Java 6) dhe përmes saj të konfigurojmë gjithçka që na nevojitet.
3. E njëjta gjë si pika 2, vetëm në një kontejner, sepse disa kolegë po përballeshin me të njëjtën çështje dhe ishte shumë më e lehtë t'i dërgoja atyre një lidhje për kontejnerin në dockerhub, sesa imazhin e virtuales, me të gjitha fjalëkalimet etj.
(Në të vërtetë, deri në pikën 3 arrita vetëm pasi bëra pikën 2)
Sot do ta realizojmë pikën 3.

Ngrita frymëzim kryesisht nga dy projekte:
1. docker-baseimage-gui
2. docker-firefox-java
Në thelb, projekti i parë docker-baseimage-gui tashmë përmban utilitetet dhe konfigurimet për të ekzekutuar aplikacione desktop në Docker. Zakonisht, ju duhet të përcaktoni variablat standard dhe aplikacioni juaj do të jetë i disponueshëm përmes shfletuesit (websocket) ose VNC. Në rastin tonë, do ta ekzekutojmë përmes Firefox-it dhe VNC, përmes websocket nuk arritëm.
Fillimisht, do të instalojmë paketat e nevojshme - Java 6 dhe 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

Tani mbetet të hyjmë në faqen e ndërfaqes ILO dhe të shkruajmë emrin dhe fjalëkalimin tonë. Aktivizojmë Firefox-in në auto-start:

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

Variabla mjedisit HILO_HOST përmban adresën web të ndërfaqes sonë ILO, për shembull myhp.example.com
Për automatizimin e hyrjes, le t'i lidhim autorizimin. Hyrja në ILO bëhet me një kërkesë POST të zakonshme, si rezultat i së cilës merrni një JSON session_key, të cilin më pas e dërgoni në kërkesën GET:
Llogarisni session_key nëpërmjet curl, nëse janë të përcaktuara variablat e mjedisit HILO_USER dhe 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

Pasi e kemi shkruar session_key në docker, mund të fillojmë VNC:

exec x11vnc -forever -create

Tani thjesht lidhemi përmes VNC në portin 5900 (ose ndonjë tjetër sipas zgjedhjes tuaj) në localhost dhe hyni në konsolën virtuale.
I gjithë kodi ndodhet në depo docker-ilo-client.
Komanda e plotë për lidhjen në 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

ku ADDRESS_OF_YOUR_HOST Ă«shtĂ« emri i hostit ILO, SOME_USERNAME — emri dhe pĂ«rkatĂ«sisht SOME_PASSWORD fjalĂ«kalimi pĂ«r ILO.
Pas kësaj, thjesht nisni çdo klient VNC në adresën: vnc://localhost:5900
Shtesat dhe kërkesat për tërheqje janë, natyrisht, të mirëpritura.

Një projekt i ngjashëm ekziston për lidhjen me ndërfaqet IDRAC të makinave DELL: docker-idrac6.

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster