„Docker“ konteineris, skirtas HP serveriams valdyti per ILO

Tikriausiai jums kyla klausimas – kodėl Docker čia egzistuoja? Kokia yra prisijungimo prie TDO žiniatinklio sąsajos ir reikalingo serverio nustatymo problema?
Taip maniau, kai man davė porą senų nereikalingų serverių, kuriuos turėjau įdiegti iš naujo (tai vadinama perteikimu). Pats serveris yra užsienyje, vienintelis prieinamas dalykas yra žiniatinklio sąsaja. Na, atitinkamai, turėjau eiti į virtualiąją konsolę, kad paleisčiau kai kurias komandas. Nuo to ir prasidėjo.
Kaip žinote, „Java“ paprastai naudojama įvairių tipų virtualioms pultėms, nesvarbu, ar tai yra HP, ar „Dell“. Bent jau taip buvo (o sistemos labai senos). Tačiau „Firefox“ ir „Chrome“ jau seniai nustojo palaikyti šias programėles, o naujoji „IcedTea“ su šiomis sistemomis neveikia. Todėl atsirado keletas variantų:

1. Pradėkite kurti zoologijos sodą iš naršyklių ir Java versijų savo kompiuteryje, šios parinkties nebereikėjo. Nesinori tyčiotis iš sistemos dėl poros komandų.
2. Virtualioje mašinoje paleiskite kažką gana seno (eksperimentiškai paaiškėjo, kad reikia Java 6) ir per ją sukonfigūruokite viską, ko reikia.
3. Tas pats, kas 2 punkte, tik konteineryje, nes keli kolegos susidūrė su ta pačia problema ir jiems daug lengviau perkelti nuorodą į konteinerį Dockerhub, nei virtualios mašinos vaizdą, su visais slaptažodžiais ir pan.
(Tiesą sakant, aš pasiekiau 3 tašką tik tada, kai padariau 2 tašką)
Šiandien atliksime 3 punktą.

Mane daugiausia įkvėpė du projektai:
1. docker-baseimage-gui
2. docker-firefox-java
Iš esmės pirmasis projektas docker-baseimage-gui jau yra paslaugų ir konfigūracijų, skirtų darbalaukio programoms paleisti „Docker“. Paprastai jums reikia apibrėžti standartinius kintamuosius ir jūsų programa bus pasiekiama per naršyklę (interneto lizdą) arba VNC. Mūsų atveju paleisime per „Firefox“ ir VNC; jis neveikė per internetinį lizdą.
Pirmiausia įdiegkime reikiamus paketus – Java 6 ir 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

Dabar tereikia eiti į TDO sąsajos puslapį ir įvesti savo vartotojo vardą bei slaptažodį. Paleiskite „Firefox“ automatiškai paleidus:

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

Aplinkos kintamajame HILO_HOST yra, pavyzdžiui, mūsų ILO sąsajos žiniatinklio adresas myhp.example.com
Norėdami automatizuoti prisijungimą, pridėkime autorizaciją. Prisijungiama prie ILO naudojant įprastą POST užklausą, dėl kurios gaunate JSON session_key, kurį perduodate GET užklausoje:
Apskaičiuokime session_key per curl, jei yra apibrėžti aplinkos kintamieji HILO_USER ir 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

Įrašę session_key docker, galime paleisti VNC:

exec x11vnc -forever -create

Dabar tiesiog per VNC prisijungiame prie 5900 prievado (arba bet kurio kito jūsų pasirinkto) „localhost“ ir einame į virtualią konsolę.
Visas kodas yra saugykloje docker-ilo-klientas.
Visa komanda prisijungti prie 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

kur ADDRESS_OF_YOUR_HOST yra ILO prieglobos pavadinimas, SOME_USERNAME yra prisijungimo vardas ir atitinkamai SOME_PASSWORD ILO slaptažodis.
Po to tiesiog paleiskite bet kurį VNC klientą adresu: vnc://localhost:5900
Papildymai ir ištraukimo užklausos, žinoma, yra laukiami.

Yra panašus projektas, skirtas prisijungti prie DELL mašinų IDRAC sąsajų: docker-idrac6.

Šaltinis: www.habr.com

Добавить комментарий