Jums, iespējams, var rasties jautājums – kas šeit ir nepieciešams Docker? Kāda ir problēma piekļūt ILO tīmekļa saskarnei un konfigurēt savu serveri tā, kā vajag?
Tāpat es domāju, kad man deva pāris vecus nevajadzīgus serverus, kurus man vajadzēja pārlādēt (to, kas tiek saukts par reprovision). Serveri atrodas otrpus okeānam, un vienīgais, kas pieejams, ir tīmekļa saskarne. Un attiecīgi man vajadzēja piekļūt Virtual Console, lai izpildītu dažus komandas. Šeit arī viss sākās.
Kā zināms, dažādu veidu virtuālajām konsolēm parasti tiek izmantota Java, gan HP, gan Dell. Vismaz agrāk tā noteikti bija (un sistēmas ir ļoti vecas). Bet Firefox un Chrome jau sen vairs neatbalsta šos applikācijas, un jaunais IcedTea ar šīm sistēmām nedarbojas. Tāpēc parādījās vairāki varianti:
1. Sākt būvēt zoodārzu no pārlūkprogramām un Java versijām savā mašīnā, šis variants tika noraidīts uzreiz. Nav nekādas vēlmes izsmiet sistēmu tikai dažu komandu dēļ.
2. Uzinstalēt kaut ko pietiekami vecu (pieredzes rezultātā noskaidrojām, ka nepieciešama Java 6) un caur to konfigurēt visu, kas vajadzīgs.
3. Tas pats, kas 2. punkts, tikai konteinerā, jo ar to pašu problēmu saskārās vairāki kolēģi, un daudz vieglāk ir nodot viņiem saiti uz konteineru dockerhub, nekā virtuālo mašīnu ar visām parolēm utt.
(Iespējams, pie 3. punkta es nonācu tikai pēc tam, kad izpildīju 2. punktu)
3. punkts, ko mēs šodien arī īstenosim.
Esmu iedvesmojies galvenokārt no diviem projektiem:
1.
2.
Principā pirmais projekts jau satur rīkus un konfigurācijas, lai palaistu galddatoru lietotnes Docker vidē. Parasti jums jānosaka standarta mainīgie, un jūsu lietotne būs pieejama caur pārlūkprogrammu (websocket) vai VNC. Mūsu gadījumā mēs palaidīsim caur Firefox un VNC, caur websocket neizdevās.
Vispirms uzinstalēsim nepieciešamās pakas – Java 6 un 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
Tagad atlikusi tikai piekļūt ILO saskarnes lapai un ievadīt savu lietotājvārdu un paroli. Palaižam Firefox automātiskajā palaišanā:
IZPILDĪT bash -c 'echo "exec openbox-session &" >> ~/.xinitrc' &&
bash -c 'echo "firefox ${HILO_HOST}" >> ~/.xinitrc' &&
bash -c 'chmod 755 ~/.xinitrc'
Vidi HILO_HOST satur mūsu ILO saskarnes tīmekļa adresi, piemēram,
Lai automatizētu piekļuvi, pievienosim autentifikāciju. Piekļuve ILO tiek veikta ar parastu POST pieprasījumu, pēc kura jūs saņemat JSON session_key, ko vēlāk nododat GET pieprasījumā:
Aprēķināsim session_key, izmantojot curl, ja ir definētas vides mainīgās HILO_USER un HILO_PASS:
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
Pēc tam, kad esam ierakstījuši session_key Docker, varam palaist VNC:
exec x11vnc -forever -create
Tagad vienkārši savienojamies pa VNC ar portu 5900 (vai jebkuru citu pēc jūsu izvēles) uz localhost un piekļūstam virtuālajai konsolē.
Visi kods atrodas repozitorijā .
Pilna komanda savienošanai ar 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
kur ADDRESS_OF_YOUR_HOST ir ILO saimniekdatne, SOME_USERNAME — lietotājvārds un attiecīgi SOME_PASSWORD parole ILO.
Pēc tam vienkārši palaidiet jebkuru VNC klientu uz adresi: vnc://localhost:5900
Papildinājumi un pull pieprasījumi, protams, tiek gaidīti.
Līdzīgs projekts pastāv, lai savienotos ar IDRAC saskarnēm DELL mašīnām: .
Avots: habr.com
