Docker container για διαχείριση διακομιστών HP μέσω ILO

Ίσως αναρωτιέστε - γιατί υπάρχει το Docker εδώ; Ποιο είναι το πρόβλημα με τη σύνδεση στη διεπαφή ιστού της ILO και τη ρύθμιση του διακομιστή σας όπως απαιτείται;
Αυτό σκέφτηκα όταν μου έδωσαν μερικούς παλιούς περιττούς διακομιστές που έπρεπε να επανεγκαταστήσω (αυτό που ονομάζεται αναπροσαρμογή). Ο ίδιος ο διακομιστής βρίσκεται στο εξωτερικό, το μόνο διαθέσιμο είναι η διεπαφή ιστού. Λοιπόν, αναλόγως, έπρεπε να πάω στην Εικονική Κονσόλα για να εκτελέσω κάποιες εντολές. Από εκεί ξεκίνησε.
Όπως γνωρίζετε, η Java χρησιμοποιείται συνήθως για διάφορα είδη εικονικών κονσολών, είτε στην HP είτε στην Dell. Τουλάχιστον έτσι ήταν παλιά (και τα συστήματα είναι πολύ παλιά). Όμως ο Firefox και ο Chrome σταμάτησαν να υποστηρίζουν αυτές τις μικροεφαρμογές εδώ και πολύ καιρό και το νέο IcedTea δεν λειτουργεί με αυτά τα συστήματα. Ως εκ τούτου, προέκυψαν διάφορες επιλογές:

1. Ξεκινήστε την κατασκευή ενός ζωολογικού κήπου από προγράμματα περιήγησης και εκδόσεις Java στο μηχάνημά σας, αυτή η επιλογή δεν ήταν πλέον απαραίτητη. Δεν υπάρχει καμία επιθυμία να κοροϊδέψουμε το σύστημα για χάρη κάποιων εντολών.
2. Εκκινήστε κάτι αρκετά παλιό στην εικονική μηχανή (αποδείχθηκε πειραματικά ότι χρειάζεστε Java 6) και ρυθμίστε όλα όσα χρειάζεστε μέσω αυτής.
3. Το ίδιο με το σημείο 2, μόνο σε ένα κοντέινερ, αφού αρκετοί συνάδελφοι αντιμετώπισαν το ίδιο πρόβλημα και είναι πολύ πιο εύκολο να τους μεταφέρουν σύνδεσμο σε κοντέινερ στο Dockerhub παρά εικόνα εικονικής μηχανής, με όλους τους κωδικούς κ.λπ.
(Στην πραγματικότητα, έφτασα στο σημείο 3 μόνο αφού έκανα το σημείο 2)
Θα κάνουμε το σημείο 3 σήμερα.

Εμπνεύστηκα κυρίως από δύο έργα:
1. docker-baseimage-gui
2. docker-firefox-java
Βασικά το πρώτο έργο docker-baseimage-gui περιέχει ήδη βοηθητικά προγράμματα και διαμορφώσεις για την εκτέλεση εφαρμογών επιφάνειας εργασίας στο Docker. Συνήθως πρέπει να ορίσετε τυπικές μεταβλητές και η εφαρμογή σας θα είναι προσβάσιμη μέσω προγράμματος περιήγησης (websocket) ή VNC. Στην περίπτωσή μας, θα εκκινήσουμε μέσω Firefox και VNC, δεν λειτούργησε μέσω websocket.
Αρχικά, ας εγκαταστήσουμε τα απαραίτητα πακέτα - Java 6 και 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

Τώρα το μόνο που έχετε να κάνετε είναι να μεταβείτε στη σελίδα διεπαφής της ILO και να εισαγάγετε το όνομα χρήστη και τον κωδικό πρόσβασής σας. Εκκινήστε τον Firefox στην αυτόματη εκκίνηση:

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

Η μεταβλητή περιβάλλοντος HILO_HOST περιέχει, για παράδειγμα, τη διεύθυνση web της διεπαφής του ILO myhp.example.com
Για να αυτοματοποιήσουμε τη σύνδεση, ας προσθέσουμε εξουσιοδότηση. Η σύνδεση στο ILO πραγματοποιείται με ένα κανονικό αίτημα POST, ως αποτέλεσμα του οποίου λαμβάνετε ένα JSON session_key, το οποίο στη συνέχεια μεταβιβάζετε σε ένα αίτημα GET:
Ας υπολογίσουμε το session_key μέσω curl εάν έχουν οριστεί οι μεταβλητές περιβάλλοντος HILO_USER και 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

Αφού καταγράψουμε το session_key στο docker, μπορούμε να εκτελέσουμε το VNC:

exec x11vnc -forever -create

Τώρα απλώς συνδέουμε μέσω VNC στη θύρα 5900 (ή οποιαδήποτε άλλη επιλογή σας) στο localhost και πηγαίνουμε στην εικονική κονσόλα.
Όλος ο κώδικας βρίσκεται στο αποθετήριο docker-ilo-client.
Πλήρης εντολή για σύνδεση στο 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

όπου ADDRESS_OF_YOUR_HOST είναι το όνομα κεντρικού υπολογιστή της ILO, SOME_USERNAME είναι η σύνδεση και, κατά συνέπεια, SOME_PASSWORD ο κωδικός πρόσβασης για την ILO.
Μετά από αυτό, απλώς εκκινήστε οποιονδήποτε πελάτη VNC στη διεύθυνση: vnc://localhost:5900
Προσθήκες και αιτήματα έλξης είναι, φυσικά, ευπρόσδεκτα.

Ένα παρόμοιο έργο υπάρχει για τη σύνδεση σε διεπαφές IDRAC μηχανών DELL: docker-idrac6.

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο