Можда се питате – зашто Доцкер постоји овде? Шта је проблем са пријављивањем на веб интерфејс ИЛО-а и подешавањем вашег сервера по потреби?
То сам помислио када су ми дали неколико старих непотребних сервера које сам морао поново да инсталирам (оно што се зове репровизија). Сам сервер се налази у иностранству, једино што је доступно је веб интерфејс. Па, сходно томе, морао сам да одем на виртуелну конзолу да покренем неке команде. Ту је почело.
Као што знате, Јава се обично користи за различите врсте виртуелних конзола, било у ХП-у или Делл-у. Барем је тако било (а системи су веома стари). Али Фирефок и Цхроме су одавно престали да подржавају ове аплете, а нови ИцедТеа не ради са овим системима. Стога се појавило неколико опција:
1. Почните да правите зоолошки врт из претраживача и Јава верзија на вашој машини, ова опција више није била потребна. Нема жеље да се систем руга зарад пар команди.
2. Покрените нешто прилично старо на виртуелној машини (експериментално се показало да вам је потребна Јава 6) и преко ње конфигуришите све што вам треба.
3. Исто као и тачка 2, само у контејнеру, пошто је неколико колега наишло на исти проблем и много лакше им је пренети линк ка контејнеру на Доцкерхуб-у него слику виртуелне машине, са свим лозинкама итд.
(У ствари, дошао сам до тачке 3 тек након што сам урадио тачку 2)
Данас ћемо урадити тачку 3.
Инспирисала су ме углавном два пројекта:
1.
2.
У основи први пројекат
Прво, хајде да инсталирамо неопходне пакете - Јава 6 и ИцедТеа:
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
Сада све што треба да урадите је да одете на страницу интерфејса ИЛО-а и унесете своје корисничко име и лозинку. Покрените Фирефок у аутоматском покретању:
RUN bash -c 'echo "exec openbox-session &" >> ~/.xinitrc' &&
bash -c 'echo "firefox ${HILO_HOST}">> ~/.xinitrc' &&
bash -c 'chmod 755 ~/.xinitrc'
Променљива окружења ХИЛО_ХОСТ садржи веб адресу нашег ИЛО интерфејса, на пример
Да бисмо аутоматизовали пријављивање, додајмо ауторизацију. Пријављивање на ИЛО се дешава са редовним ПОСТ захтевом, као резултат тога добијате ЈСОН сессион_кеи, који затим прослеђујете у ГЕТ захтеву:
Хајде да израчунамо сессион_кеи преко цурл-а ако су дефинисане променљиве окружења ХИЛО_УСЕР и ХИЛО_ПАСС:
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
Када снимимо сессион_кеи у доцкер-у, можемо покренути ВНЦ:
exec x11vnc -forever -create
Сада се једноставно повезујемо преко ВНЦ-а на порт 5900 (или било који други по вашем избору) на локалном хосту и идемо на виртуелну конзолу.
Сав код је у спремишту
Комплетна команда за повезивање са ИЛО:
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
где је АДДРЕСС_ОФ_ИОУР_ХОСТ име ИЛО хоста, СОМЕ_УСЕРНАМЕ је логин и, сходно томе, СОМЕ_ПАССВОРД лозинка за ИЛО.
Након тога, једноставно покрените било који ВНЦ клијент на адресу: vnc://localhost:5900
Додаци и захтеви за повлачење су, наравно, добродошли.
Сличан пројекат постоји за повезивање на ИДРАЦ интерфејсе ДЕЛЛ машина:
Извор: ввв.хабр.цом