Bekas Docker untuk mengurus pelayan HP melalui ILO

Anda mungkin tertanya-tanya - mengapa Docker wujud di sini? Apakah masalah dengan log masuk ke antara muka web ILO dan menyediakan pelayan anda seperti yang diperlukan?
Itulah yang saya fikirkan apabila mereka memberi saya beberapa pelayan lama yang tidak diperlukan yang perlu saya pasang semula (apa yang dipanggil peruntukan semula). Pelayan itu sendiri terletak di luar negara, satu-satunya perkara yang tersedia ialah antara muka web. Oleh itu, saya terpaksa pergi ke Konsol Maya untuk menjalankan beberapa arahan. Di situlah ia bermula.
Seperti yang anda tahu, Java biasanya digunakan untuk pelbagai jenis konsol maya, sama ada dalam HP atau Dell. Sekurang-kurangnya begitulah dulu (dan sistemnya sangat lama). Tetapi Firefox dan Chrome telah lama berhenti menyokong applet ini, dan IcedTea baharu tidak berfungsi dengan sistem ini. Oleh itu, beberapa pilihan muncul:

1. Mula membina zoo daripada pelayar dan versi Java pada mesin anda, pilihan ini tidak diperlukan lagi. Tidak ada keinginan untuk mengejek sistem demi beberapa arahan.
2. Lancarkan sesuatu yang agak lama pada mesin maya (ternyata secara eksperimen anda memerlukan Java 6) dan konfigurasikan semua yang anda perlukan melaluinya.
3. Sama seperti titik 2, hanya dalam bekas, kerana beberapa rakan sekerja menghadapi masalah yang sama dan lebih mudah untuk memindahkan mereka pautan ke bekas di Dockerhub daripada imej mesin maya, dengan semua kata laluan, dsb.
(Malah, saya hanya mendapat mata 3 selepas saya melakukan mata 2)
Kita akan lakukan mata 3 hari ini.

Saya diilhamkan terutamanya oleh dua projek:
1. docker-baseimage-gui
2. docker-firefox-java
Pada asasnya projek pertama docker-baseimage-gui sudah mengandungi utiliti dan konfigurasi untuk menjalankan aplikasi desktop dalam Docker. Biasanya anda perlu mentakrifkan pembolehubah standard dan aplikasi anda boleh diakses melalui pelayar (websocket) atau VNC. Dalam kes kami, kami akan melancarkan melalui Firefox dan VNC; ia tidak berfungsi melalui websocket.
Mula-mula, mari pasang pakej yang diperlukan - Java 6 dan 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

Sekarang anda hanya perlu pergi ke halaman antara muka ILO dan masukkan nama pengguna dan kata laluan anda. Lancarkan Firefox dalam autostart:

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

Pembolehubah persekitaran HILO_HOST mengandungi alamat web antara muka ILO kami, sebagai contoh myhp.example.com
Untuk mengautomasikan log masuk, mari tambahkan kebenaran. Log masuk ke ILO berlaku dengan permintaan POST biasa, akibatnya anda menerima JSON session_key, yang kemudian anda luluskan dalam permintaan GET:
Mari kita mengira session_key melalui curl jika pembolehubah persekitaran HILO_USER dan HILO_PASS ditakrifkan:

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

Sebaik sahaja kami telah merekodkan session_key dalam docker, kami boleh melancarkan VNC:

exec x11vnc -forever -create

Sekarang kami hanya menyambung melalui VNC ke port 5900 (atau mana-mana pilihan anda) pada localhost dan pergi ke konsol maya.
Semua kod ada dalam repositori docker-ilo-client.
Perintah penuh untuk menyambung ke 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

dengan ADDRESS_OF_YOUR_HOST ialah nama hos ILO, SOME_USERNAME ialah log masuk dan, oleh itu, SOME_PASSWORD kata laluan untuk ILO.
Selepas itu, lancarkan mana-mana pelanggan VNC ke alamat: vnc://localhost:5900
Penambahan dan permintaan tarik, sudah tentu, dialu-alukan.

Projek serupa wujud untuk menyambung ke antara muka IDRAC mesin DELL: docker-idrac6.

Sumber: www.habr.com

Tambah komen