Chombo cha Docker cha kudhibiti seva za HP kupitia ILO

Labda unajiuliza - kwa nini Docker ipo hapa? Kuna tatizo gani la kuingia kwenye kiolesura cha wavuti cha ILO na kusanidi seva yako inavyohitajika?
Ndivyo nilivyofikiria waliponipa seva kadhaa za zamani zisizo za lazima ambazo nilihitaji kusakinisha tena (kinachoitwa urekebishaji). Seva yenyewe iko nje ya nchi, kitu pekee kinachopatikana ni kiolesura cha wavuti. Kweli, ipasavyo, ilibidi niende kwa Dashibodi ya Virtual kutekeleza maagizo kadhaa. Hapo ndipo ilipoanzia.
Kama unavyojua, Java kawaida hutumiwa kwa aina anuwai za viboreshaji pepe, iwe katika HP au Dell. Angalau ndivyo ilivyokuwa (na mifumo ni ya zamani sana). Lakini Firefox na Chrome ziliacha kuunga mkono applets hizi muda mrefu uliopita, na IcedTea mpya haifanyi kazi na mifumo hii. Kwa hivyo, chaguzi kadhaa ziliibuka:

1. Anza kuunda bustani ya wanyama kutoka kwa vivinjari na matoleo ya Java kwenye mashine yako, chaguo hili halikuhitajika tena. Hakuna hamu ya kudhihaki mfumo kwa sababu ya amri kadhaa.
2. Zindua kitu cha zamani kabisa kwenye mashine ya kawaida (ilitokea kwa majaribio kwamba unahitaji Java 6) na usanidi kila kitu unachohitaji kupitia hiyo.
3. Sawa na hatua ya 2, tu kwenye chombo, kwa kuwa wenzake kadhaa walikutana na tatizo sawa na ni rahisi zaidi kuwahamisha kiungo kwenye chombo kwenye Dockerhub kuliko picha ya mashine ya virtual, na nywila zote, nk.
(Kwa kweli, nilipata tu alama ya 3 baada ya kutoa alama 2)
Tutafanya point 3 leo.

Nilitiwa moyo hasa na miradi miwili:
1. docker-baseimage-gui
2. docker-firefox-java
Kimsingi mradi wa kwanza docker-baseimage-gui tayari ina huduma na usanidi wa kuendesha programu za eneo-kazi kwenye Docker. Kwa kawaida unahitaji kufafanua vigezo vya kawaida na programu yako itafikiwa kupitia kivinjari (soketi ya wavuti) au VNC. Kwa upande wetu, tutazindua kupitia Firefox na VNC; haikufanya kazi kupitia websocket.
Kwanza, wacha tusakinishe vifurushi muhimu - Java 6 na 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

Sasa unachotakiwa kufanya ni kwenda kwenye ukurasa wa kiolesura cha ILO na kuingiza jina lako la mtumiaji na nenosiri. Zindua Firefox kwa kuanza kiotomatiki:

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

Tofauti ya mazingira ya HILO_HOST ina anwani ya wavuti ya kiolesura chetu cha ILO, kwa mfano myhp.example.com
Ili kuingia kiotomatiki, wacha tuongeze idhini. Kuingia kwenye ILO hutokea kwa ombi la kawaida la POST, matokeo yake unapokea ufunguo wa JSON, ambao unapitisha ombi la GET:
Wacha tuhesabu ufunguo_wa session kupitia curl ikiwa anuwai za mazingira HILO_USER na HILO_PASS zimefafanuliwa:

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

Mara tu tumerekodi session_key kwenye docker, tunaweza kuendesha VNC:

exec x11vnc -forever -create

Sasa tunaunganisha kwa urahisi kupitia VNC hadi port 5900 (au nyingine yoyote ya chaguo lako) kwenye localhost na nenda kwa kiweko pepe.
Nambari zote ziko kwenye hazina docker-ilo-mteja.
Amri kamili ya kuunganishwa 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

ambapo ADDRESS_OF_YOUR_HOST ni jina la mwenyeji wa ILO, SOME_USERNAME ndiye kuingia na, ipasavyo, SOME_PASSWORD nenosiri la ILO.
Baada ya hayo, zindua mteja wowote wa VNC kwa anwani: vnc://localhost:5900
Maombi ya nyongeza na kuvuta yanakaribishwa.

Mradi kama huo upo wa kuunganisha kwenye miingiliano ya IDRAC ya mashine za DELL: docker-idrac6.

Chanzo: mapenzi.com

Kuongeza maoni