
The files in tools/vnc-container allow a container image to be built which supports Ironic's graphical console functionality. For each node with an enabled graphical console, the service ironic-novncproxy (or nova-novncproxy) will connect to a VNC server exposed by a container running this image. If the devstack ir-novnc serivce is enabled then this container image will be built locally and ironic configured to used it for the systemd console container provider. This makes a devstack environment functional in accessing graphical consoles for Dell, HPE and Supermicro. Related-Bug: 2086715 Change-Id: I0842570cca22ac0e67d358c30225e8e08561f459
VNC Container
Overview
This allows a container image to be built which supports Ironic's graphical console functionality.
For each node with an enabled graphical console, the service ironic-novncproxy (or nova-novncproxy) will connect to a VNC server exposed by a container running this image.
Building and using
To build the container image for local use, install
buildah
and run the following as the user which runs
ironic-conductor:
buildah bud -f ./Containerfile -t localhost/ironic-vnc-container
The systemd
container provider (or an external provider)
can then be configured to use this image in
ironic.conf
:
[vnc]
container_provider=systemd
console_image=localhost/ironic-vnc-container
Implementation
When the container is started the following occurs:
- Xvfb is run, which starts a virtual X11 session
- x11vnc is run, which exposes a VNC server port
When a VNC connection is established a Selenium python script is started which:
- Starts a Chromium browser
- For the
fake
app displays drivers/fake/index.html - For the
redfish
app detects the vendor by looking at theOem
value in a/redfish/v1
response - Runs vendor specific code to display an HTML5 based console
When the VNC connection is terminated, the Selenium script and Chromium is also terminated.
Vendor specific implementations are as follows.
Dell iDRAC
One-time console credentials are created with a call to
/Managers/<manager>/Oem/Dell/DelliDRACCardService/Actions/DelliDRACCardService.GetKVMSession
and the browser loads a console URL using those credentials.
HPE iLO
The /irc.html
URL is loaded. For iLO 6 the inline login
form is populated with credentials and submitted, showing the console.
For iLO 5 the main login page is loaded, and when the login is submitted
irc.html
is loaded again.
Supermicro (Experimental)
A simulated user logs in, waits for the console preview image to load, then clicks on it.