Вероятно се чудите - защо Docker е тук? Какъв е проблемът с достъпа до уеб интерфейса на ILO и правилното настройване на вашия сървър?
Така си помислих, когато ми дадоха няколко стари ненужни сървъра, които трябваше да преинсталирам (това, което се нарича reprovision). Самите сървъри са в чужбина, единственото налично нещо е уеб интерфейсът. Е, съответно трябваше да отида във виртуалната конзола, за да изпълня някои команди. Ето откъде започна.
Както знаете, за различни видове виртуални конзоли обикновено се използва Java, както в HP, така и в Dell. Така или иначе със сигурност е било така (и системите са много стари). Но Firefox и Chrome отдавна са престанали да поддържат тези аплети и новият IcedTea не работи с тези системи. Следователно имаше няколко варианта:
1. Започнете да създавате зоологическа градина от браузъри и версии на Java на вашата машина, тази опция изчезна веднага. Няма желание да се подигравате на системата в името на няколко команди.
2. Пуснете нещо доста старо на виртуалната машина (експериментално се оказа, че трябва Java 6) и конфигурирайте всичко необходимо през него.
3. Същото като точка 2, само в контейнера, тъй като няколко колеги се сблъскаха със същия проблем и е много по-лесно да им изпратите линк към контейнера на dockerhub, отколкото изображение на виртуална машина с всички пароли и т.н.
(Всъщност стигнах до точка 3 едва след като направих точка 2)
Точка 3 ще направим днес.
Бях вдъхновен основно от два проекта:
1.
2.
По принцип първият проект
Първо инсталирайте необходимите пакети - 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
Сега остава да отидете на страницата на интерфейса на МОТ и да въведете вашето потребителско име и парола. Стартирайте Firefox при автоматично стартиране:
RUN bash -c 'echo "exec openbox-session &" >> ~/.xinitrc' &&
bash -c 'echo "firefox ${HILO_HOST}">> ~/.xinitrc' &&
bash -c 'chmod 755 ~/.xinitrc'
Променливата на средата HILO_HOST съдържа например уеб адреса на нашия ILO интерфейс
За да автоматизираме влизането, нека закрепим авторизацията. Влизането в ILO става с обикновена POST заявка, в резултат на което получавате JSON session_key, който след това предавате в GET заявка:
Изчислете session_key чрез curl, ако са дефинирани променливите на средата HILO_USER и 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
След като сме записали session_key в докера, можем да стартираме VNC:
exec x11vnc -forever -create
Сега просто се свързваме чрез VNC към порт 5900 (или който и да е друг по ваш избор) на localhost и отиваме на виртуалната конзола.
Целият код е в хранилището
Пълна команда за свързване с 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
където ADDRESS_OF_YOUR_HOST е името на хоста на ILO, SOME_USERNAME е данните за вход и, съответно, SOME_PASSWORD е паролата на ILO.
След това просто стартирайте всеки VNC клиент на адрес: vnc://localhost:5900
Добавките и заявките за изтегляне са добре дошли, разбира се.
Съществува подобен проект за свързване към IDRAC интерфейсите на DELL машини:
Източник: www.habr.com