kamermans / docker-openmanage

Dell OpenManage Server Administrator in a Docker container with SNMP support
57 stars 13 forks source link
dell docker-container firmware-upgrade omsa openmanage-essentials

docker-openmanage

Dell OpenManage and Dell System Update (dsu) running in a self-contained Docker container.

Note: this project includes the systemctl replacement from @gdraheim.

Compatibility

The host operating system must be Linux, and is known to work in RHEL, CentOS, Debian and Ubuntu. The release version of the distribution is not particularly important since they all share the Linux kernel, although it is possible that some issues could exist.

This image has been tested on the following Dell hardware:

Hardware Status
Dell PowerEdge R610 OK
Dell PowerEdge R620 OK
Dell PowerEdge R710 OK
Dell PowerEdge R720 OK
Dell PowerEdge R720xd OK
Dell PowerVault NX3000 OK
Dell Cloud Server C1100 (Direct from Dell) Not Supported
Dell Cloud Server C1100 CS24-TY (OEM Custom Build) Not Supported

If you have tested this image on other hardware, please share your results in the form of a GitHub issue or Pull Request, and I'll update the list!

Note: if you get the error USB is not enabled. Please enable USB and try update again, you should make sure the usb-storage kernel module is loaded on the host machine. You can check this with lsmod | grep usb-storage and load it with modprobe usb-storage. To make this change permanent, add it to your system's auto-loaded modules (for example, on Debian/Ubuntu: echo usb-storage > /etc/modules-load.d/usb-storage.conf).

Firmware Upgrade

To upgrade you Dell's server firmware from Dell Global repository, simply run:

docker run --rm -ti --privileged --net=host -v /dev:/dev kamermans/docker-openmanage dsu

You are presented with an interactive text interface where you can select the updates that you would like to apply based on what is available for your Dell server.

Note: I was able to obtain some of the functionality of this container by reverse-engineering the Dell DSET Live ISO Image. I have also created a Docker-based version of DSET, which is available in Docker Hub as kamermans/dell-dset. This image has only one layer and no Dockerfile as it is a verbatim copy of the OS filesystem from the Dell ISO image. This image is tagged to match the ISO version, so kamermans/dell-dset:SLI22_A00 matches the Dell ISO SLI22_A00.

Server Administrator

This is losely based on the OpenManage container that Dell created. Notably, this image includes SNMP support and out-of-the box support for registration in OpenManage Essentials. Base Project: https://github.com/jose-delarosa/docker-images/tree/master/openmanage81

The easiest way to get up and running is to download the standalone startup script, openmanage.sh from https://raw.githubusercontent.com/kamermans/docker-openmanage/master/openmanage.sh

# curl -sSL https://raw.githubusercontent.com/kamermans/docker-openmanage/master/openmanage.sh > ./openmanage.sh
# chmod +x openmanage.sh
# ./openmanage.sh

OpenManage Server Administrator in a Docker Container

Usage: ./openmanage.sh <start|stop|restart|status|update> [snmp_community] [snmp_trap_dest]
   snmp_community   The SNMP community string to use (default: public)
   snmp_trap_dest   The SNMP trap destination - this is normally the IP
                     or hostname to the OpenManage Essentials server
                     (default: 192.168.0.1)

Note that OpenManage Server Administrator will still work without
 either arguments, but will not be detected by OpenManage Essentials.

From here you can start the container (the image will be downloaded from Docker Hub the first time) as well as stop, restart and check the status of it. You can also download or update the image by running ./openmanage update

To connect it to OpenManage Essentials, you'll need to pass the snmp_community and snmp_trap_dest arguments so OpenManage Server Administrator knows how to connect to it.

Note that this container uses the Docker options --privileged, -v /dev:/dev and --net=host in order to access your server hardware and correctly report the network configuration.

If you are hesitent to download and run a bash script from some random site on the internet, and you can't understand my bash code, I would urge you to learn bash, then continue :)

If you choose not to learn bash, here's how to run the container without the init script:

docker run -d -P \
    --name="openmanage" \
    --privileged \
    --net="host" \
    -v /lib/modules/$(uname -r):/lib/modules/$(uname -r):ro \
    -v /dev:/dev \
    -e "SNMP_COMMUNITY=snmp_community" \
    -e "SNMP_TRAP_DEST=snmp_trap_dest" \
    kamermans/docker-openmanage

Please feel free to browse the source code over at the GitHub repo: https://github.com/kamermans/docker-openmanage

Special thanks to the following people for their contributions:

And a big thanks to Dell for sharing the original container with the open source community!