用於透過 ILO 管理 HP 伺服器的 Docker 容器

您可能想知道 - 為什麼 Docker 存在於此? 登入 ILO Web 介面並根據需要設定伺服器有什麼問題?
當他們給我一些不需要的舊伺服器需要我重新安裝(所謂的重新配置)時,我就是這麼想的。 伺服器本身位於海外,唯一可用的就是網路介面。 好吧,相應地,我必須轉到虛擬控制台來運行一些命令。 這就是事情開始的地方。
如您所知,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 環境變數包含我們的 ILO 介面的 Web 位址,例如 myhp.example.com
為了自動登錄,讓我們新增授權。 透過常規 POST 請求登入 ILO,因此您會收到 JSON session_key,然後將其傳入 GET 請求:
如果定義了 HILO_USER 和 HILO_PASS 環境變量,讓我們透過curl 來計算session_key:

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

一旦我們在docker中記錄了session_key,我們就可以啟動VNC:

exec x11vnc -forever -create

現在我們只需透過 VNC 連接到本機上的連接埠 5900(或您選擇的任何其他連接埠)並轉到虛擬控制台。
所有程式碼都在儲存庫中 docker-ilo-客戶端.
連接到 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
當然,歡迎添加和拉取請求。

存在一個類似的項目用於連接到 DELL 機器的 IDRAC 介面: docker-idrac6.

來源: www.habr.com

添加評論