Docker kontejner pro správu serverů HP prostřednictvím ILO

Možná se ptáte – proč zde Docker existuje? Jaký je problém s přihlášením do webového rozhraní ILO a nastavením vašeho serveru podle potřeby?
To jsem si myslel, když mi dali pár starých nepotřebných serverů, které jsem potřeboval přeinstalovat (to, čemu se říká reprovision). Samotný server je umístěn v zámoří, k dispozici je pouze webové rozhraní. V souladu s tím jsem musel jít do virtuální konzole, abych spustil nějaké příkazy. Tam to začalo.
Jak víte, Java se obvykle používá pro různé druhy virtuálních konzolí, ať už v HP nebo Dell. Alespoň to tak bývalo (a systémy jsou velmi staré). Firefox a Chrome ale tyto applety přestaly podporovat už dávno a nový IcedTea s těmito systémy nefunguje. Proto se objevilo několik možností:

1. Začněte budovat zoo z prohlížečů a verzí Java na vašem počítači, tato možnost již nebyla potřeba. Neexistuje žádná touha zesměšňovat systém kvůli několika příkazům.
2. Spusťte na virtuálním stroji něco docela starého (experimentálně se ukázalo, že potřebujete Java 6) a nakonfigurujte přes to vše, co potřebujete.
3. Totéž jako bod 2, pouze v kontejneru, protože několik kolegů narazilo na stejný problém a je mnohem jednodušší přenést jim odkaz na kontejner na Dockerhubu než obraz virtuálního stroje se všemi hesly atd.
(Ve skutečnosti jsem se k bodu 3 dostal až poté, co jsem udělal bod 2)
Dnes uděláme bod 3.

Inspirovaly mě především dva projekty:
1. docker-baseimage-gui
2. docker-firefox-java
V podstatě první projekt docker-baseimage-gui již obsahuje nástroje a konfigurace pro spouštění desktopových aplikací v Dockeru. Obvykle potřebujete definovat standardní proměnné a vaše aplikace bude přístupná přes prohlížeč (websocket) nebo VNC. V našem případě spustíme přes Firefox a VNC, přes websocket to nefungovalo.
Nejprve nainstalujme potřebné balíčky - Java 6 a 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

Nyní vše, co musíte udělat, je přejít na stránku rozhraní ILO a zadat své uživatelské jméno a heslo. Spusťte Firefox v automatickém spuštění:

RUN bash -c 'echo "exec openbox-session &" >> ~/.xinitrc' &&
bash -c 'echo "firefox ${HILO_HOST}">> ~/.xinitrc' &&
bash -c 'chmod 755 ~/.xinitrc'

Proměnná prostředí HILO_HOST obsahuje například webovou adresu našeho rozhraní ILO myhp.example.com
Pro automatizaci přihlašování přidáme autorizaci. Přihlášení do ILO probíhá běžným požadavkem POST, v důsledku čehož obdržíte klíč JSON session_key, který pak předáte v požadavku GET:
Vypočítejme session_key přes curl, pokud jsou definovány proměnné prostředí HILO_USER a 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

Jakmile zaznamenáme klíč session_key do dockeru, můžeme spustit VNC:

exec x11vnc -forever -create

Nyní se jednoduše připojíme přes VNC k portu 5900 (nebo libovolnému jinému dle vašeho výběru) na localhost a přejdeme do virtuální konzole.
Veškerý kód je v úložišti docker-ilo-client.
Úplný příkaz pro připojení k 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

kde ADDRESS_OF_YOUR_HOST je název hostitele ILO, SOME_USERNAME je přihlašovací jméno a podle toho SOME_PASSWORD heslo pro ILO.
Poté jednoduše spusťte libovolného klienta VNC na adresu: vnc://localhost:5900
Doplnění a žádosti o stažení jsou samozřejmě vítány.

Podobný projekt existuje pro připojení k rozhraním IDRAC počítačů DELL: docker-idrac6.

Zdroj: www.habr.com

Přidat komentář