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.
2.
Iš esmės pirmasis projektas
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
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
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ų:
Šaltinis: www.habr.com