Docker контейнер за управление на HP сървъри чрез ILO

Вероятно се чудите - защо Docker е тук? Какъв е проблемът с достъпа до уеб интерфейса на ILO и правилното настройване на вашия сървър?
Така си помислих, когато ми дадоха няколко стари ненужни сървъра, които трябваше да преинсталирам (това, което се нарича reprovision). Самите сървъри са в чужбина, единственото налично нещо е уеб интерфейсът. Е, съответно трябваше да отида във виртуалната конзола, за да изпълня някои команди. Ето откъде започна.
Както знаете, за различни видове виртуални конзоли обикновено се използва 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 вече съдържа помощни програми и конфигурации за стартиране на настолни приложения в докер. Обикновено трябва да дефинирате стандартни променливи и вашето приложение ще бъде достъпно чрез браузър (websocket) или VNC. В нашия случай ще работим през Firefox и VNC, не работи през websocket.
Първо инсталирайте необходимите пакети - 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 интерфейс 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 в докера, можем да стартираме VNC:

exec x11vnc -forever -create

Сега просто се свързваме чрез VNC към порт 5900 (или който и да е друг по ваш избор) на localhost и отиваме на виртуалната конзола.
Целият код е в хранилището docker-ilo-клиент.
Пълна команда за свързване с 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 машини: докер-idrac6.

Източник: www.habr.com

Добавяне на нов коментар