Контейнери Docker барои идоракунии серверҳои HP тавассути ILO

Шояд шумо дар ҳайрат бошед - чаро 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 оғоз мекунем; он тавассути вебсокет кор намекунад.
Аввалан, биёед бастаҳои заруриро насб кунем - 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
Барои автоматикунонии воридшавӣ, биёед авторизатсияро илова кунем. Воридшавӣ ба СБМ бо дархости муқаррарии POST сурат мегирад, ки дар натиҷа шумо сессия_калиди JSON мегиред, ки шумо онро дар дархости 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 номи мизбони СБМ мебошад, SOME_USERNAME логин ва мувофиқан SOME_PASSWORD пароли ILO мебошад.
Пас аз он, ҳама гуна муштарии VNC-ро ба суроғаи зерин оғоз кунед: vnc://localhost:5900
Иловаҳо ва дархостҳои ҷалб, албатта, хуш омадед.

Лоиҳаи шабеҳ барои пайвастшавӣ ба интерфейсҳои IDRAC мошинҳои DELL вуҷуд дорад: docker-idrac6.

Манбаъ: will.com

Илова Эзоҳ