ILO aracılığıyla HP sunucularını yönetmek için Docker konteyneri

Muhtemelen Docker'ın neden burada var olduğunu merak ediyor olabilirsiniz. ILO web arayüzünde oturum açma ve sunucunuzu gerektiği gibi kurma konusunda sorun nedir?
Bana yeniden kurmam gereken birkaç eski gereksiz sunucu verdiklerinde böyle düşündüm (buna yeniden sağlama denir). Sunucunun kendisi yurtdışında bulunuyor, mevcut olan tek şey web arayüzü. Buna göre bazı komutları çalıştırmak için Sanal Konsola gitmem gerekti. İşte burada başladı.
Bildiğiniz gibi Java, ister HP ister Dell olsun, genellikle çeşitli sanal konsol türleri için kullanılır. En azından eskiden böyleydi (ve sistemler çok eski). Ancak Firefox ve Chrome bu uygulamaları desteklemeyi uzun zaman önce bıraktı ve yeni IcedTea bu sistemlerle çalışmıyor. Bu nedenle birkaç seçenek ortaya çıktı:

1. Makinenizdeki tarayıcılardan ve Java sürümlerinden bir hayvanat bahçesi oluşturmaya başlayın, bu seçeneğe artık gerek yoktu. Birkaç komut uğruna sistemle alay etme arzusu yok.
2. Sanal makinede oldukça eski bir şeyi başlatın (deneysel olarak Java 6'ya ihtiyacınız olduğu ortaya çıktı) ve ihtiyacınız olan her şeyi onun aracılığıyla yapılandırın.
3. 2. maddeyle aynı, yalnızca bir kapta, çünkü birkaç meslektaş aynı sorunla karşılaştı ve onlara Dockerhub'daki bir konteynere bağlantı aktarmak, tüm şifreleri vb. içeren bir sanal makine görüntüsünden çok daha kolay.
(Aslında 3. noktaya ancak 2. noktayı yaptıktan sonra ulaşabildim)
Bugün 3. noktayı yapacağız.

Esas olarak iki projeden ilham aldım:
1. docker-baseimage-gui
2. liman işçisi-firefox-java
Temel olarak ilk proje docker-baseimage-gui Docker'da masaüstü uygulamalarını çalıştırmaya yönelik yardımcı programları ve yapılandırmaları zaten içerir. Tipik olarak standart değişkenleri tanımlamanız gerekir ve uygulamanıza tarayıcı (websocket) veya VNC aracılığıyla erişilebilir. Bizim durumumuzda, Firefox ve VNC aracılığıyla başlatacağız; websocket aracılığıyla çalışmadı.
Öncelikle gerekli paketleri yükleyelim - Java 6 ve 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

Artık tek yapmanız gereken ILO arayüz sayfasına gidip kullanıcı adınızı ve şifrenizi girmek. Firefox'u otomatik başlatmada başlatın:

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

HILO_HOST ortam değişkeni ILO arayüzümüzün web adresini içerir; örneğin myhp.example.com
Girişi otomatikleştirmek için yetkilendirme ekleyelim. ILO'ya giriş, normal bir POST isteğiyle gerçekleşir ve bunun sonucunda bir JSON oturum_anahtarı alırsınız ve bunu daha sonra bir GET isteğinde iletirsiniz:
HILO_USER ve HILO_PASS ortam değişkenleri tanımlanmışsa session_key'i curl aracılığıyla hesaplayalım:

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

Oturum_anahtarını docker'a kaydettikten sonra VNC'yi başlatabiliriz:

exec x11vnc -forever -create

Şimdi VNC aracılığıyla localhost üzerindeki 5900 numaralı bağlantı noktasına (veya seçtiğiniz herhangi bir başka bağlantı noktasına) bağlanıp sanal konsola gidiyoruz.
Tüm kodlar depoda liman işçisi-ilo-istemcisi.
ILO'ya bağlanmak için tam komut:

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 ana bilgisayar adıdır, SOME_USERNAME oturum açma adıdır ve buna göre SOME_PASSWORD ILO için paroladır.
Bundan sonra herhangi bir VNC istemcisini şu adreste başlatmanız yeterlidir: vnc://localhost:5900
Eklemeler ve çekme istekleri elbette memnuniyetle karşılanır.

DELL makinelerinin IDRAC arayüzlerine bağlanmak için benzer bir proje mevcuttur: liman işçisi-idrac6.

Kaynak: habr.com

Yorum ekle