BƏT vasitəsilə HP serverlərini idarə etmək üçün Docker konteyneri

Yəqin ki, təəccüblənə bilərsiniz - Docker niyə buradadır? BƏT veb interfeysinə daxil olmaq və serverinizi düzgün qurmaqla bağlı problem nədir?
Mənə bir neçə köhnə lazımsız server verəndə düşündüm ki, yenidən quraşdırmalı oldum (buna reprovision deyilir). Serverlərin özləri xaricdədir, mövcud olan yeganə şey veb interfeysdir. Yaxşı, buna uyğun olaraq bəzi əmrləri yerinə yetirmək üçün Virtual Konsola getməli oldum. Başladığı yer budur.
Bildiyiniz kimi, müxtəlif növ virtual konsollar üçün Java adətən həm HP, həm də Dell-də istifadə olunur. Hər halda, əvvəllər belə idi (və sistemlər çox köhnədir). Lakin Firefox və Chrome çoxdan bu appletləri dəstəkləməyi dayandırıblar və yeni IcedTea bu sistemlərlə işləmir. Beləliklə, bir neçə variant var idi:

1. Maşınınızdakı brauzerlərdən və Java versiyalarından zoopark yaratmağa başlayın, bu seçim dərhal yox oldu. Bir-iki əmr xatirinə sistemi ələ salmaq istəyi yoxdur.
2. Virtual maşında kifayət qədər köhnə bir şeyi işə salın (eksperimental olaraq məlum oldu ki, Java 6 lazımdır) və lazım olan hər şeyi onun vasitəsilə konfiqurasiya edin.
3. 2-ci bəndlə eynidir, yalnız konteynerdə, çünki bir neçə həmkarı eyni problemlə üzləşib və onlara dockerhub-da konteynerə keçid göndərmək bütün parolları olan virtual maşının təsvirindən daha asandır və s.
(Əslində, mən yalnız 3-ci nöqtəni yerinə yetirdikdən sonra 2-cü nöqtəyə çatdım)
3-cü nöqtəni bu gün edəcəyik.

Mən əsasən iki layihədən ilham aldım:
1. docker-baseimage-gui
2. docker-firefox-java
Əsasən ilk layihə docker-baseimage-gui artıq docker-də masaüstü proqramları işə salmaq üçün utilitlər və konfiqurasiyaları ehtiva edir. Adətən siz standart dəyişənləri təyin etməlisiniz və tətbiqinizə brauzer (websocket) və ya VNC vasitəsilə daxil olmaq mümkün olacaq. Bizim vəziyyətimizdə Firefox və VNC vasitəsilə işləyəcəyik, o, websocket vasitəsilə işləmədi.
Əvvəlcə lazımi paketləri quraşdırın - Java 6 və 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

İndi BƏT-in interfeys səhifəsinə getmək və istifadəçi adınızı və şifrənizi daxil etmək qalır. Firefox-u avtomatik başlatmada işə salın:

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

HILO_HOST mühit dəyişəni, məsələn, BƏT interfeysimizin veb ünvanını ehtiva edir myhp.example.com
Girişi avtomatlaşdırmaq üçün icazəni bağlayaq. BƏT-ə daxil olmaq adi POST sorğusu ilə baş verir, bunun nəticəsində siz JSON session_key alırsınız, sonra onu GET sorğusuna keçirsiniz:
HILO_USER və HILO_PASS mühit dəyişənləri müəyyən edilibsə, curl vasitəsilə session_keyi hesablayın:

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

Docker-də session_key-i qeyd etdikdən sonra VNC-yə başlaya bilərik:

exec x11vnc -forever -create

İndi biz sadəcə VNC vasitəsilə localhost-da 5900 portuna (və ya seçdiyiniz hər hansı digər) qoşuluruq və virtual konsola keçirik.
Bütün kodlar depodadır docker-ilo-müştəri.
ILO-ya qoşulmaq üçün tam əmr:

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 BƏT-in host adı, SOME_USERNAME giriş və müvafiq olaraq SOME_PASSWORD BƏT paroludur.
Bundan sonra istənilən VNC müştərisini ünvana işə salın: vnc://localhost:5900
Əlavələr və çəkmə istəkləri, əlbəttə ki, xoşdur.

DELL maşınlarının IDRAC interfeyslərinə qoşulmaq üçün oxşar layihə mövcuddur: docker-idrac6.

Mənbə: www.habr.com

Добавить комментарий