Võib-olla mõtlete – miks Docker siin eksisteerib? Mis probleem on ILO veebiliidesesse sisselogimisel ja serveri seadistamisel vastavalt vajadusele?
Seda ma mõtlesin, kui nad andsid mulle paar vana mittevajalikku serverit, mille pidin uuesti installima (seda nimetatakse taaspakkumiseks). Server ise asub välismaal, ainus, mis saadaval on, on veebiliides. Noh, vastavalt sellele pidin mõne käsu käivitamiseks minema virtuaalkonsooli. Sealt see alguse saigi.
Nagu teate, kasutatakse Java tavaliselt mitmesuguste virtuaalsete konsoolide jaoks, olgu see siis HP või Delli puhul. Vähemalt nii see vanasti oli (ja süsteemid on väga vanad). Kuid Firefox ja Chrome lõpetasid nende aplettide toetamise juba ammu ning uus IcedTea nende süsteemidega ei tööta. Seetõttu tekkis mitu võimalust:
1. Hakka loomaaeda oma masinas brauserite ja Java versioonide järgi ehitama, seda võimalust enam vaja ei läinud. Pole soovi paari käsu pärast süsteemi mõnitada.
2. Käivitage virtuaalmasinas midagi üsna vana (eksperimentaalselt selgus, et vajate Java 6) ja seadistage kõik vajalik selle kaudu.
3. Sama, mis punktis 2, ainult konteineris, kuna mitu kolleegi puutusid kokku sama probleemiga ja neile on palju lihtsam Dockerhubis asuvasse konteinerisse linki edastada kui virtuaalmasina kujutist, koos kõigi paroolidega jne.
(Tegelikult jõudsin punkti 3 juurde alles pärast punkti 2 tegemist)
Teeme täna punkti 3.
Mind inspireerisid peamiselt kaks projekti:
1.
2.
Põhimõtteliselt esimene projekt
Esmalt paigaldame vajalikud paketid - Java 6 ja 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
Nüüd pole vaja teha muud, kui minna ILO liidese lehele ja sisestada oma kasutajanimi ja parool. Käivitage Firefox automaatkäivitusega:
RUN bash -c 'echo "exec openbox-session &" >> ~/.xinitrc' &&
bash -c 'echo "firefox ${HILO_HOST}">> ~/.xinitrc' &&
bash -c 'chmod 755 ~/.xinitrc'
Keskkonnamuutuja HILO_HOST sisaldab näiteks meie ILO liidese veebiaadressi
Sisselogimise automatiseerimiseks lisame autoriseerimise. ILO-sse sisselogimine toimub tavalise POST-i päringuga, mille tulemusel saate JSON-i session_key, mille edastate seejärel GET-päringus:
Kui keskkonnamuutujad HILO_USER ja HILO_PASS on määratletud, arvutame sessiooni_võtme curl kaudu:
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
Kui oleme dockeris salvestanud sessiooni_võtme, saame käivitada VNC:
exec x11vnc -forever -create
Nüüd ühendame lihtsalt VNC kaudu localhosti pordiga 5900 (või mõne muu teie valitud) ja läheme virtuaalsesse konsooli.
Kogu kood on hoidlas
Täielik käsk ILO-ga ühenduse loomiseks:
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
kus ADDRESS_OF_YOUR_HOST on ILO hostinimi, SOME_USERNAME on sisselogimine ja vastavalt SOME_PASSWORD ILO parool.
Pärast seda käivitage lihtsalt mis tahes VNC klient järgmisele aadressile: vnc://localhost:5900
Täiendused ja tõmbamissoovid on loomulikult teretulnud.
Sarnane projekt on olemas DELL-i masinate IDRAC-liidestega ühendamiseks:
Allikas: www.habr.com