Docker-container til styring af HP-servere via ILO

Du undrer dig måske - hvorfor eksisterer Docker her? Hvad er problemet med at logge ind på ILO-webgrænsefladen og konfigurere din server efter behov?
Det tænkte jeg, da de gav mig et par gamle unødvendige servere, som jeg skulle geninstallere (det der kaldes reprovision). Selve serveren er placeret i udlandet, det eneste tilgængelige er webgrænsefladen. Nå, derfor var jeg nødt til at gå til den virtuelle konsol for at køre nogle kommandoer. Det var der, det startede.
Som du ved, bruges Java normalt til forskellige slags virtuelle konsoller, hvad enten det er i HP eller Dell. Sådan har det i hvert fald været (og systemerne er meget gamle). Men Firefox og Chrome holdt op med at understøtte disse applets for længe siden, og den nye IcedTea fungerer ikke med disse systemer. Derfor dukkede flere muligheder op:

1. Begynd at bygge en zoologisk have fra browsere og Java-versioner på din maskine, denne mulighed var ikke længere nødvendig. Der er ikke noget ønske om at håne systemet af hensyn til et par kommandoer.
2. Start noget ret gammelt på den virtuelle maskine (det viste sig eksperimentelt, at du har brug for Java 6) og konfigurer alt, hvad du har brug for gennem den.
3. Det samme som punkt 2, kun i en container, da flere kollegaer stødte på det samme problem, og det er meget nemmere at overføre dem et link til en container på Dockerhub end et virtuel maskinbillede, med alle adgangskoder osv.
(Faktisk nåede jeg først til punkt 3 efter at jeg lavede punkt 2)
Vi laver punkt 3 i dag.

Jeg blev primært inspireret af to projekter:
1. docker-basebillede gui
2. docker-firefox-java
I bund og grund det første projekt docker-basebillede gui indeholder allerede hjælpeprogrammer og konfigurationer til at køre desktop-applikationer i Docker. Typisk skal du definere standardvariabler, og din applikation vil være tilgængelig via browser (websocket) eller VNC. I vores tilfælde vil vi starte via Firefox og VNC; det virkede ikke via websocket.
Lad os først installere de nødvendige pakker - Java 6 og 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

Nu skal du blot gå til ILO-grænsefladesiden og indtaste dit brugernavn og din adgangskode. Start Firefox i autostart:

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

Miljøvariablen HILO_HOST indeholder f.eks. webadressen på vores ILO-grænseflade myhp.example.com
For at automatisere login, lad os tilføje autorisation. Login til ILO sker med en almindelig POST-anmodning, som et resultat af hvilken du modtager en JSON session_key, som du derefter sender i en GET-anmodning:
Lad os beregne 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 registreret session_key i docker, kan vi køre VNC:

exec x11vnc -forever -create

Nu forbinder vi blot via VNC til port 5900 (eller en hvilken som helst anden efter eget valg) på localhost og går til den virtuelle konsol.
Al kode er i depotet docker-ilo-klient.
Fuld kommando for 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 ILO-værtsnavnet, SOME_USERNAME er login og følgelig SOME_PASSWORD adgangskoden til ILO.
Derefter skal du blot starte en hvilken som helst VNC-klient til adressen: vnc://localhost:5900
Tilføjelser og pull-ønsker er naturligvis velkomne.

Et lignende projekt eksisterer for tilslutning til IDRAC-grænseflader på DELL-maskiner: docker-idrac6.

Kilde: www.habr.com

Tilføj en kommentar