OOD 1.8.12-1.el7 - Installing Websockify breaks OnDemand Instance

Hi there,

I’ve got a basic installation of OOD up and running (CentOS 7, amd64, fully patched). I’m slowly adding components (LDAP, Slurm) to make it a “real” installation and try things out ahead of eventually building a production system.

I noticed that the Shell option in the Files app was failing because of a failure with websockify, which isn’t installed on my OnDemand instance. Given that this is a dev environment I thought I’d simply install it, rather than connect a login node (which is probably the better way to do it!). I installed python3-setup tools, downloaded websockify, and extracted and installed it with python3 setup.py install.

Unfortunately, that has broken my OnDemand instance. Not a big deal as I have an Ansible playbook to build it from scratch, but might be an interesting problem to deal with. Probably not supposed to install websockify on the OnDemand instance at all, ever…

Error -- Permission denied @ dir_s_mkdir - /var/run/ondemand-nginx
Run 'nginx_stage --help' to see a full list of available command line options.

Do you use SELinux? That directory that got permission denied is added by the ondemand RPM so I’m not sure why installing websockify would cause permission denied unless websockify itself is restricted by SELinux due to the context it was installed under.

websockify is actually needed on the compute nodes. We provide RPMs if you don’t want to install via Python.

yum install https://yum.osc.edu/ondemand/1.8/ondemand-release-compute-1.8-1.noarch.rpm
yum install ondemand-compute

Yes, we’re using SELinux. Not sure why installing websockify (via that Python installer) killed it either but I reproduced exactly that at least two times.

I knew it was needed on the compute nodes, but was hoping to get the Shell option in Files working. Does adding a compute node fix that? We currently don’t have any set up in OOD (but we do have them :slight_smile:)

Does that ondemand-compute package include more than websockify - ideally, * nmap-ncat, turbovnc and websockify? So in theory, you just deploy that one RPM to your compute nodes and they’re ready to go…

The ondemand-compute RPM will pull in the python-websockify RPM and TurboVNC from OnDemand repos as well as depend on nmap-ncat and a few other programs we require: https://github.com/OSC/ondemand-packaging/blob/master/packages/ondemand-compute/ondemand-compute.spec#L11-L16

To utilize the RPM based websockify and turbovnc for interactive jobs, you will need something like this in your cluster YAML config: https://github.com/ubccr/hpc-toolset-tutorial/blob/master/ondemand/cluster-config.yml#L12-L17

Awesome. By any chance will that RPM work on SLES? Most of our compute nodes are SLES-based.

We have not tested any of our RPMs on SLES. In theory the RPM itself could work on SLES but the repo likely will not. You might be able to take the existing repo file and add a few extra lines to make it work based on some testing I did a while back for SUSE support:

type=rpm-md
autorefresh=1

Might have to remove repo metadata GPG check from repo file we provide, but the actual gpgcheck=1 and gpgkey can stay.