Konteynir Docker ji bo birêvebirina serverên HP-ê bi ILO-yê

Dibe ku hûn bipirsin - çima Docker li vir heye? Pirsgirêka têketina navgîniya webê ya ILO û sazkirina servera xwe li gorî hewcedariyê çi ye?
Ya ku ez difikirîm gava ku wan çend serverên nehewce yên kevn ên ku ez hewce bûm ku ji nû ve saz bikim (ya ku jê re jêveger tê gotin) dan min. Pêşkêşkar bixwe li derveyî welat e, tenê tiştê ku heye pêwendiya malperê ye. Welê, li gorî vê yekê, ez neçar bûm ku ez biçim Konsola Virtualê da ku hin fermanan bimeşîne. Li wir dest pê kir.
Wekî ku hûn dizanin, Java bi gelemperî ji bo cûrbecûr konsolên virtual, çi di HP an jî Dell de, tê bikar anîn. Bi kêmanî ew çawa berê bû (û pergalên pir kevn in). Lê Firefox û Chrome demeke dirêj berê piştgiriya van appletan rawestand, û IcedTea-ya nû bi van pergalan re naxebite. Ji ber vê yekê, çend vebijark derketin holê:

1. Ji gerok û guhertoyên Java-yê li ser makîneya xwe dest bi avakirina zozanek bikin, êdî ev vebijark ne hewce bû. Ji bo xatirê çend fermanan xwestek tune ku pergalê tinazê xwe bike.
2. Tiştek pir kevn li ser makîneya virtual bidin destpêkirin (bi ceribandinê derket ku hûn hewceyê Java 6-ê ne) û her tiştê ku hûn hewce ne bi wê ve mîheng bikin.
3. Heman xala 2, tenê di konteynerek de, ji ber ku çend hevkaran rastî heman pirsgirêkê hatin û ji wêneyek makîneya virtual, digel hemî şîfreyan, û hwd veguheztina girêdanek bi konteynirek li ser Dockerhub-ê pir hêsantir e.
(Bi rastî, piştî ku min xala 3 kir, ez tenê gihîştim xala 2)
Em ê îro xala 3 bikin.

Ez bi giranî ji du projeyan îlham girtim:
1. docker-baseimage-gui
2. docker-firefox-java
Di bingeh de projeya yekem docker-baseimage-gui Jixwe ji bo xebitandina sepanên sermaseyê di Docker de karûbar û mîhengan vedihewîne. Bi gelemperî hûn hewce ne ku guhêrbarên standard diyar bikin û serîlêdana we dê bi gerok (websocket) an VNC ve were gihîştin. Di doza me de, em ê bi Firefox û VNC-ê dest pê bikin; ew bi websocket-ê nexebitî.
Pêşîn, bila em pakêtên pêwîst saz bikin - Java 6 û 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

Naha ya ku hûn bikin ev e ku biçin rûpela navbeynkariya ILO û navê bikarhêner û şîfreya xwe binivîsin. Firefox-ê di destpêka otomatîkê de dest pê bikin:

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

Guherbara jîngehê HILO_HOST navnîşana webê ya pêwendiya meya ILO-yê, mînakî, dihewîne myhp.example.com
Ji bo ku têketinê bixweber bikin, werin em destûrnameyê zêde bikin. Têkeve ILO bi daxwaznameyek POST ya birêkûpêk pêk tê, di encamê de hûn JSON session_key distînin, ku hûn paşê di daxwaznameyek GET de derbas dikin:
Ger guhêrbarên hawîrdorê yên HILO_USER û HILO_PASS hatine diyarkirin, em session_key bi riya curl hesab bikin:

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

Gava ku me session_key di docker de tomar kir, em dikarin VNC bidin destpêkirin:

exec x11vnc -forever -create

Naha em tenê bi navgîniya VNC ve girêdidin porta 5900 (an bijareya weya din) li ser localhost û diçin konsolê virtual.
Hemî kod di depoyê de ye docker-ilo-client.
Fermana tevahî ji bo girêdana bi 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 navê mêvandarê ILO ye, SOME_USERNAME têketinê ye û li gorî vê yekê, SOME_PASSWORD şîfreya ILO ye.
Piştî wê, bi tenê xerîdarek VNC-ê bi navnîşanê bidin destpêkirin: vnc://localhost:5900
Zêdekirin û daxwazên kişandinê, bê guman, bi xêr hatî.

Ji bo girêdana bi navgînên IDRAC ên makîneyên DELL ve projeyek wusa heye: docker-idrac6.

Source: www.habr.com

Add a comment