ILO аркылуу HP серверлерин башкаруу үчүн докер контейнери

Балким, сиз ойлонуп жаткандырсыз - эмне үчүн Докер бул жерде бар? ЭЭУнун веб-интерфейсине кирүү жана сервериңизди зарылчылыкка жараша орнотууда кандай көйгөй бар?
Алар мага кайра орнотушум керек болгон бир нече эски керексиз серверлерди бергенде, мен ушундай деп ойлогом (бул репровизия деп аталат). Сервер өзү чет өлкөдө жайгашкан, бир гана веб-интерфейс бар. Демек, мен кээ бир буйруктарды иштетүү үчүн Virtual Console барууга туура келди. Мына ошондон башталды.
Белгилүү болгондой, 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 чөйрө өзгөрмөсү, мисалы, биздин ILO интерфейсибиздин веб дарегин камтыйт myhp.example.com
Кирүүнү автоматташтыруу үчүн авторизацияны кошобуз. ЭЭУга кирүү кадимки 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 аркылуу localhostтогу 5900 портуна (же сиз каалаган башка) туташып, виртуалдык консолго барабыз.
Бардык код репозиторийде 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
Кошумчалар жана тартуу өтүнүчтөрү, албетте, кабыл алынат.

Ушундай эле долбоор DELL машиналарынын IDRAC интерфейстерине туташуу үчүн бар: docker-idrac6.

Source: www.habr.com

Комментарий кошуу