Wadah Docker kanggo ngatur server HP liwat ILO

Sampeyan bisa uga mikir - kenapa Docker ana ing kene? Apa masalah nalika mlebu ing antarmuka web ILO lan nyetel server sampeyan yen perlu?
Iku sing dakkira nalika dheweke menehi sawetara server lawas sing ora perlu sing kudu diinstal maneh (apa sing diarani reprovision). Server kasebut dhewe dumunung ing luar negeri, mung ana antarmuka web. Dadi, aku kudu menyang Konsol Virtual kanggo mbukak sawetara perintah. Ing kono wiwit.
Kaya sing wis dingerteni, Java biasane digunakake kanggo macem-macem konsol virtual, apa ing HP utawa Dell. Paling ora kaya ngono (lan sistem wis lawas banget). Nanging Firefox lan Chrome wis suwe ora ndhukung applet kasebut, lan IcedTea anyar ora bisa digunakake karo sistem kasebut. Mulane, sawetara opsi muncul:

1. Miwiti mbangun kebon binatang saka browser lan versi Java ing mesin sampeyan, pilihan iki ora dibutuhake maneh. Ora ana kepinginan kanggo moyoki sistem kanggo saperangan printah.
2. Bukak soko cukup lawas ing mesin virtual (pranyata metu eksperimen sing perlu Jawa 6) lan ngatur kabeh sing perlu liwat.
3. Padha titik 2, mung ing wadhah, wiwit sawetara kolega nemokke masalah padha lan iku luwih gampang kanggo nransfer link menyang wadhah ing Dockerhub saka gambar mesin virtual, karo kabeh sandhi, etc.
(Nyatane, aku mung entuk poin 3 sawise aku nindakake poin 2)
Kita bakal nindakake titik 3 dina iki.

Aku diilhami utamane dening rong proyek:
1. docker-baseimage-gui
2. docker-firefox-java
Sejatine proyek pisanan docker-baseimage-gui wis ngemot keperluan lan konfigurasi kanggo mbukak aplikasi desktop ing Docker. Biasane sampeyan kudu nemtokake variabel standar lan aplikasi sampeyan bakal bisa diakses liwat browser (websocket) utawa VNC. Ing kasus kita, kita bakal mbukak liwat Firefox lan VNC; ora bisa digunakake liwat websocket.
Pisanan, ayo nginstal paket sing dibutuhake - Java 6 lan 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

Saiki sampeyan mung kudu pindhah menyang kaca antarmuka ILO lan ketik jeneng pangguna lan sandhi. Bukak Firefox ing autostart:

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

Variabel lingkungan HILO_HOST ngemot alamat web antarmuka ILO kita, contone myhp.example.com
Kanggo ngotomatisasi login, ayo nambah wewenang. Mlebet ILO dumadi kanthi panyuwunan POST biasa, minangka asil sampeyan nampa JSON session_key, sing banjur sampeyan lebokake ing panjalukan GET:
Ayo ngetung session_key liwat curl yen variabel lingkungan HILO_USER lan HILO_PASS ditetepake:

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

Sawise kita wis ngrekam session_key ing docker, kita bisa miwiti VNC:

exec x11vnc -forever -create

Saiki kita mung nyambung liwat VNC menyang port 5900 (utawa liyane saka pilihan sampeyan) ing localhost lan pindhah menyang console virtual.
Kabeh kode ana ing gudang docker-ilo-klien.
Perintah lengkap kanggo nyambung menyang 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

ngendi ADDRESS_OF_YOUR_HOST minangka jeneng host ILO, SOME_USERNAME minangka login lan, kanthi mangkono, SOME_PASSWORD sandhi kanggo ILO.
Sawise iku, bukak wae klien VNC menyang alamat kasebut: vnc://localhost:5900
Tambahan lan panjalukan narik, mesthi, sambutan.

Ana proyek sing padha kanggo nyambungake menyang antarmuka IDRAC mesin DELL: docker-idrac6.

Source: www.habr.com

Add a comment