Докер контејнер за управување со серверите на HP преку ILO

Можеби се прашувате - зошто тука постои Докер? Кој е проблемот со најавувањето на веб-интерфејсот на МОТ и поставувањето на вашиот сервер по потреба?
Така помислив кога ми дадоа неколку стари непотребни сервери што требаше да ги инсталирам повторно (што се нарекува репровизија). Самиот сервер се наоѓа во странство, единственото нешто што е достапно е веб-интерфејсот. Па, соодветно, морав да одам до Виртуелната конзола за да извршам некои команди. Оттаму почна.
Како што знаете, Java обично се користи за различни видови виртуелни конзоли, без разлика дали се во HP или Dell. Барем така беше порано (а системите се многу стари). Но, Firefox и Chrome одамна престанаа да ги поддржуваат овие аплети, а новиот IcedTea не работи со овие системи. Затоа, се појавија неколку опции:

1. Започнете со изградба на зоолошка градина од прелистувачи и Java верзии на вашата машина, оваа опција повеќе не беше потребна. Нема желба да се исмејува системот заради неколку команди.
2. Стартувајте нешто прилично старо на виртуелната машина (експериментално се покажа дека ви треба Java 6) и конфигурирајте сè што ви треба преку него.
3. Исто како точка 2, само во контејнер, бидејќи неколку колеги наишле на истиот проблем и многу е полесно да им префрлат линк до контејнер на Dockerhub отколку слика на виртуелна машина, со сите лозинки итн.
(Всушност, дојдов до точка 3 само откако ја завршив точката 2)
Денеска ќе ја направиме точката 3.

Бев инспириран главно од два проекти:
1. docker-baseimage-gui
2. docker-firefox-java
Во суштина првиот проект docker-baseimage-gui веќе содржи алатки и конфигурации за извршување на десктоп апликации во Docker. Обично треба да дефинирате стандардни променливи и вашата апликација ќе биде достапна преку прелистувач (websocket) или VNC. Во нашиот случај, ќе стартуваме преку Firefox и VNC; тоа не функционираше преку веб-сокет.
Прво, да ги инсталираме потребните пакети - 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 ја содржи веб-адресата на нашиот интерфејс на МОТ, на пример myhp.example.com
За автоматизирање на најавувањето, ајде да додадеме овластување. Пријавувањето во 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 во docker, можеме да стартуваме VNC:

exec x11vnc -forever -create

Сега едноставно се поврзуваме преку VNC со портата 5900 (или која било друга по ваш избор) на localhost и одиме на виртуелната конзола.
Целиот код е во складиштето докер-ило-клиент.
Целосна команда за поврзување со МОТ:

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 е името на домаќинот на МОТ, SOME_USERNAME е најавувањето и, соодветно, SOME_PASSWORD лозинката за МОТ.
После тоа, едноставно стартувајте кој било клиент VNC на адресата: vnc://localhost:5900
Дополнувањата и барањата за повлекување се, се разбира, добредојдени.

Сличен проект постои за поврзување со IDRAC интерфејси на DELL машините: докер-идрац6.

Извор: www.habr.com

Додадете коментар