Asal dalam bahasa RusiaNah, Anda bisa bertanya-tanya - mengapa saya menggunakan kontainer untuk tujuan seperti itu? Apa masalah untuk memasuki antarmuka web ILO dan mengelola server seperti biasa?
Pikiran yang sama saya miliki ketika saya punya beberapa server lama yang membutuhkan reprovision. Server terletak di benua yang berbeda dan satu-satunya antarmuka yang saya miliki hanyalah antarmuka web ILO. Dan ketika saya harus memasukkan beberapa perintah manual melalui Virtual Console saya menemukan bahwa itu hampir tidak mungkin.
Untuk berbagai jenis Konsol Virtual server (baik HP dan Dell) biasanya Java web applet digunakan. Tetapi Firefox dan Chrome tidak mendukung mereka lagi dan IcedTea terbaru tidak bekerja dengan sistem yang lama itu. Jadi saya punya beberapa pilihan:
- Untuk memasang versi lama peramban dan Java yang paralel, coba temukan kombinasi yang diperlukan, di sistem saya. Opsi ini disaring, karena saya tidak ingin mencemari sistem saya hanya karena beberapa perintah konsol.
- Buat mesin virtual dengan sistem lama, instal di sana Java 6 dan gunakan Virtual Console seperti sebelumnya.
- Sama seperti pada poin 2, tetapi dengan wadah, bukan mesin virtual. Karena beberapa rekan saya mengalami masalah yang sama, saya lebih suka memberikan mereka satu perintah bash untuk menjalankan Virtual Console daripada membagikan disk Virtual Machine, kata sandi untuk itu, dll.
(Sejujurnya, poin 3 saya buat hanya setelah poin 2).
Poin 3 adalah apa yang akan kita implementasikan hari ini.
Saya sebagian besar terinspirasi oleh dua proyek ini:
- buruh pelabuhan-baseimage-gui
- buruh pelabuhan-firefox-java
Sebenarnya,
docker proyek
-baseimage-gui pertama sudah berisi semua konfigurasi dan alat yang diperlukan untuk memulai aplikasi desktop di browser dalam sebuah wadah. Biasanya Anda menentukan variabel lingkungan tertentu dan aplikasi Anda akan dapat diakses melalui browser (websocket) atau VNC. Dalam kasus kami, kami mulai dengan Firefox dan VNC, websocket tidak berfungsi dengan baik.
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 mari kita buka halaman web antarmuka ILO di Firefox dan masukkan kredensial di sana. Mulai Firefox:
RUN bash -c 'echo "exec openbox-session &" >> ~/.xinitrc' && \ bash -c 'echo "firefox \${HILO_HOST}">> ~/.xinitrc' && \ bash -c 'chmod 755 ~/.xinitrc'
Variabel HILO_HOST adalah URL dari antarmuka ILO kami, misalnya
https://myhp.example.com
.
Untuk otomatisasi, mari kita tambahkan otentikasi. Login ILO dijalankan melalui permintaan POST sederhana, sebagai tanggapan Anda mendapatkan nilai session_key dan kemudian meneruskan nilai ini dalam permintaan GET. Mari kita temukan session_key dengan curl jika variabel lingkungan HILO_USER dan HILO_PASS didefinisikan:
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 kami menulis session_key dalam wadah, kami dapat memulai server VNC:
exec x11vnc -forever -create
Sekarang cukup terhubung dengan klien VNC ke port 5900 (atau apa yang Anda tentukan dalam pilihan Anda) ke localhost dan masukkan Virtual Console dari server HP.
Kode ini terletak di git
docker-ilo-client .
Perintah satu baris penuh untuk terhubung ke Konsol Virtual 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
di mana ADDRESS_OF_YOUR_HOST adalah nama host dari ILO, SOME_USERNAME adalah login dan SOME_PASSWORD adalah kata sandi untuk ILO.
Selanjutnya hanya pergi dengan klien VNC ke alamat
vnc://localhost:5900
.
Permintaan dan komentar tarik lebih dari diterima.
Proyek serupa untuk koneksi ke server Dell IDRAC ada di sini:
docker-idrac6 .