Måske undrer du dig over, hvorfor der er brug for Docker her? Hvad er problemet med at gå ind i ILO-webgrænsefladen og konfigurere din server som nødvendig?
Det tænkte jeg også, da jeg fik et par gamle, unødvendige servere, som jeg skulle geninstallere (det, der kaldes reprovision). Serverne befinder sig på den anden side af havet, og det eneste tilgængelige er webgrænsefladen. Og selvfølgelig skulle jeg ind i Virtual Console for at udføre nogle kommandoer. Her begyndte det.
Som det er kendt, bruges der normalt Java til forskellige slags virtuelle konsoller, både i HP og i Dell. I hvert fald gjorde det tidligere (og systemerne er meget gamle). Men Firefox og Chrome har længe stoppet med at understøtte disse applets, og den nye IcedTea fungerer ikke med disse systemer. Derfor opstod der flere muligheder:
1. Begynd at konstruere et zoo af browsere og Java-versioner på min maskine; denne mulighed blev straks forkastet. Jeg har ikke noget ønske om at mishandle systemet for et par kommandoer.
2. Køre noget tilstrækkeligt gammelt på en virtuel maskine (det blev klart, at Java 6 er nødvendig) og konfigurere alt, hvad der skal gøres via det.
3. Det samme som punkt 2, men i en container, da flere kolleger stødte på det samme problem, og det er meget lettere at give dem et link til containeren på Docker Hub end til et billede af den virtuelle maskine med alle adgangskoder osv.
(Faktisk kom jeg først til punkt 3 efter at have udført punkt 2)
Punkt 3 vil vi udføre i dag.
Jeg blev mest inspireret af to projekter:
1.
2.
I princippet indeholder det første projekt allerede nyttige værktøjer og konfigurationer til at køre desktop-applikationer i Docker. Normalt skal du definere standardvariabler, og din applikation vil være tilgængelig via browseren (websocket) eller VNC. I vores tilfælde vil vi køre det gennem Firefox og VNC, da det ikke lykkedes via websocket.
Først installerer vi de nødvendige pakker - Java 6 og IcedTea:
KØR 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
Nu er det bare at gå ind på ILO-grænsefladens side og indtaste dit brugernavn og din adgangskode. Vi starter Firefox i auto-start:
Kør bash -c 'echo "exec openbox-session &" >> ~/\.xinitrc' &&
bash -c 'echo "firefox ${HILO_HOST}" >> ~/\.xinitrc' &&
bash -c 'chmod 755 ~/\.xinitrc'
Miljøvariablen HILO_HOST indeholder webadressen til vores ILO-grænseflade, for eksempel
For at automatisere login lad os implementere godkendelse. Login i ILO sker gennem en almindelig POST-anmodning, der resulterer i, at du får JSON session_key, som derefter sendes i en GET-anmodning:
Beregn session_key via curl, hvis miljøvariablerne HILO_USER og HILO_PASS er defineret:
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
Når vi har skrevet session_key i Docker, kan vi starte VNC:
exec x11vnc -forever -create
Nu skal vi blot forbinde via VNC til port 5900 (eller en anden efter dit valg) på localhost og få adgang til den virtuelle konsol.
Al koden findes i lageret .
Den fulde kommando til at oprette forbindelse til 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
hvor ADDRESS_OF_YOUR_HOST er navnet på ILO-vært, SOME_USERNAME — brugernavnet og naturligvis SOME_PASSWORD er adgangskoden til ILO.
Derefter skal du blot starte enhver VNC-klient på adressen: vnc://localhost:5900
Bidrag og pull-requests er naturligvis velkomne.
Et lignende projekt eksisterer for forbindelse til IDRAC-grænseflader på DELL-maskiner: .
Kilde: habr.com
