用于通过ILO管理HP服务器的Docker容器

您可能想知道-为什么Docker在这里? 转到ILO Web界面并按原样设置服务器有什么问题?

所以我想,当他们给我几个旧的不必要的服务器时,我不得不重新安装(称为重新配置)。 服务器本身位于大洋彼岸,唯一可用的是Web界面。 好吧,因此,我不得不进入虚拟控制台来执行一些命令。 这是它开始的地方。

如您所知,对于各种虚拟控制台,通常在HP和Dell使用Java。 无论如何,它曾经是如此的精确(而且系统很旧)。 但是Firefox和Chrome早已停止支持这些applet,而新的IcedTea不适用于这些系统。 因此,确定了几种选择:

  1. 要从计算机上的浏览器和Java版本开始构建Zoo,此选项立即消失。 不想为几个团队模拟该系统。
  2. 在虚拟机上运行相当古老的工具(实验发现需要Java 6),并通过它配置所需的一切。
  3. 与第2点相同,只是在容器中,因为几个同事都遇到了相同的问题,并且比起带有所有密码等的虚拟机映像,向他们传递dockerhub上的容器链接要容易得多。

(实际上,只有达到第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界面的网址,例如myhp.example.com

要自动执行该条目,让我们拧紧授权。 登录到ILO是通过常规POST请求执行的,结果是您获得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-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
当然,欢迎添加和请求请求。

存在用于连接DELL机器的IDRAC接口的类似项目: docker-idrac6

Source: https://habr.com/ru/post/zh-CN449080/


All Articles