ILO арқылы HP серверлерін басқаруға арналған докер контейнері

Сізді қызықтыруы мүмкін - неге Docker бұл жерде бар? ХЕҰ веб-интерфейсіне кіру және қажет болған жағдайда серверді орнату мәселесі қандай?
Олар маған қайта орнату қажет бірнеше ескі қажетсіз серверлерді бергенде, мен осылай ойладым (қайта жабдықтау деп аталады). Сервердің өзі шетелде орналасқан, қол жетімді жалғыз нәрсе - веб-интерфейс. Сәйкесінше, кейбір пәрмендерді орындау үшін Виртуалды консольге өтуім керек болды. Міне осыдан басталды.
Өздеріңіз білетіндей, 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 арқылы іске қосамыз, ол 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 ортасының айнымалы мәні, мысалы, ХЕҰ интерфейсінің веб-мекен-жайын қамтиды myhp.example.com
Жүйеге кіруді автоматтандыру үшін авторизацияны қосамыз. ILO жүйесіне кіру әдеттегі POST сұрауы арқылы жүзеге асады, нәтижесінде сіз JSON session_key кодын аласыз, содан кейін оны GET сұрауына жібересіз:
HILO_USER және HILO_PASS ортасының айнымалы мәндері анықталған болса, curl арқылы session_key мәнін есептейік:

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 — ХЕҰ хост атауы, SOME_USERNAME — логин және сәйкесінше, SOME_PASSWORD — ХЕҰ құпия сөзі.
Осыдан кейін кез келген VNC клиентін мына мекенжай бойынша іске қосыңыз: vnc://localhost:5900
Толықтырулар мен тарту сұраулары, әрине, құпталады.

DELL машиналарының IDRAC интерфейстеріне қосылу үшін ұқсас жоба бар: docker-idrac6.

Ақпарат көзі: www.habr.com

пікір қалдыру