起源于俄语好吧,您可能想知道-为什么我要使用Docker容器来实现此目的? 进入ILO的Web界面并照常管理服务器有什么问题?
当我有几台需要重新配置的旧服务器时,我也有同样的想法。 这些服务器位于不同的大陆,而我拥有的唯一接口只是ILO的Web接口。 当我不得不通过虚拟控制台输入一些手动命令时,我发现几乎不可能。
对于服务器(HP和Dell)的各种虚拟控制台,通常使用Java Web小程序。 但是Firefox和Chrome不再支持它们,而最新的IcedTea也不适合那些旧系统。 所以我有几个选择:
- 要在我的系统上并行安装旧版本的浏览器和Java,并尝试找到所需的组合。 此选项已被滤除,因为我不想因为很少的控制台命令而污染系统。
- 使用旧系统创建虚拟机,在其中安装Java 6并像以前一样使用虚拟控制台。
- 与第2点相同,但使用容器而不是虚拟机。 由于一些同事遇到了相同的问题,所以我宁愿向他们传递一个bash命令来运行虚拟控制台,而不是共享虚拟机磁盘,其密码等。
(老实说,我提出的第3点仅在第2点之后)。
第三点是我们今天要实施的。
我主要受到以下两个项目的启发:
- docker-baseimage-gui
- docker-firefox-java
实际上,第一个项目
docker-baseimage-gui已经包含了在容器内的浏览器中启动桌面应用程序所需的所有配置和工具。 通常,您定义特定的环境变量,然后您的应用将可以通过浏览器(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
现在,让我们在Firefox中打开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界面的URL,例如
https://myhp.example.com
。
为了实现自动化,我们添加身份验证。 通过简单的POST请求执行ILO登录,作为响应,您获取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
在容器中写入session_key之后,我们可以启动VNC服务器:
exec x11vnc -forever -create
现在,只需将VNC客户端连接到本地主机的端口5900(或您选择的端口),然后输入HP服务器的虚拟控制台即可。
该代码位于git存储库
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 。