Wadah Docker untuk mengelola server HP melalui ILO

Anda mungkin bertanya-tanya - mengapa Docker ada di sini? Apa masalah saat masuk ke antarmuka web ILO dan menyiapkan server Anda sesuai kebutuhan?
Itulah yang saya pikirkan ketika mereka memberi saya beberapa server lama yang tidak perlu dan perlu saya instal ulang (yang disebut penyediaan ulang). Servernya sendiri berlokasi di luar negeri, yang tersedia hanyalah antarmuka web. Oleh karena itu, saya harus pergi ke Konsol Virtual untuk menjalankan beberapa perintah. Di situlah semuanya dimulai.
Seperti yang Anda ketahui, Java biasanya digunakan untuk berbagai macam konsol virtual baik di HP maupun Dell. Setidaknya begitulah dulu (dan sistemnya sudah sangat tua). Namun Firefox dan Chrome sudah lama berhenti mendukung applet ini, dan IcedTea baru tidak berfungsi dengan sistem ini. Oleh karena itu, muncul beberapa pilihan:

1. Mulai buat kebun binatang dari browser dan versi Java di mesin Anda, opsi ini tidak lagi diperlukan. Tidak ada keinginan untuk mengejek sistem demi beberapa perintah.
2. Luncurkan sesuatu yang cukup lama di mesin virtual (ternyata secara eksperimental Anda memerlukan Java 6) dan konfigurasikan semua yang Anda perlukan melaluinya.
3. Sama seperti poin 2, hanya dalam sebuah wadah, karena beberapa rekan mengalami masalah yang sama dan jauh lebih mudah untuk mentransfer tautan ke wadah di Dockerhub kepada mereka daripada gambar mesin virtual, dengan semua kata sandi, dll.
(Sebenarnya saya baru sampai pada poin 3 setelah saya melakukan poin 2)
Kami akan melakukan poin 3 hari ini.

Saya terinspirasi terutama oleh dua proyek:
1. buruh pelabuhan-baseimage-gui
2. buruh pelabuhan-firefox-java
Pada dasarnya proyek pertama buruh pelabuhan-baseimage-gui sudah berisi utilitas dan konfigurasi untuk menjalankan aplikasi desktop di Docker. Biasanya Anda perlu mendefinisikan variabel standar dan aplikasi Anda akan dapat diakses melalui browser (websocket) atau VNC. Dalam kasus kami, kami akan meluncurkan melalui Firefox dan VNC; itu tidak berfungsi melalui websocket.
Pertama, mari kita instal paket 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 yang harus Anda lakukan adalah membuka halaman antarmuka ILO dan memasukkan nama pengguna dan kata sandi Anda. Luncurkan Firefox di mulai otomatis:

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

Variabel lingkungan HILO_HOST berisi alamat web antarmuka ILO kami, misalnya myhp.example.com
Untuk mengotomatiskan login, mari tambahkan otorisasi. Login ke ILO terjadi dengan permintaan POST biasa, sebagai hasilnya Anda menerima session_key JSON, yang kemudian Anda teruskan dalam permintaan GET:
Mari kita hitung session_key melalui curl jika variabel lingkungan HILO_USER dan HILO_PASS ditentukan:

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

Setelah kita mencatat session_key di buruh pelabuhan, kita dapat menjalankan VNC:

exec x11vnc -forever -create

Sekarang kita cukup terhubung melalui VNC ke port 5900 (atau port lain pilihan Anda) di localhost dan pergi ke konsol virtual.
Semua kode ada di repositori buruh pelabuhan-ilo-klien.
Perintah lengkap untuk terhubung 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

dimana ADDRESS_OF_YOUR_HOST adalah nama host ILO, SOME_USERNAME adalah login dan, oleh karena itu, SOME_PASSWORD adalah kata sandi untuk ILO.
Setelah itu, cukup luncurkan klien VNC apa saja ke alamat: vnc://localhost:5900
Penambahan dan permintaan penarikan, tentu saja, diterima.

Proyek serupa ada untuk menghubungkan ke antarmuka IDRAC pada mesin DELL: buruh pelabuhan-idrac6.

Sumber: www.habr.com

Tambah komentar