4. Customize AttributesΒΆ
Now we will customize the app to work on a given cluster. Be sure that you walk through Software Requirements for the given cluster ahead of time.
The main responsibility of the form.yml file (User Form) located in the root of the app is for defining the attributes (their values or HTML form elements) used when generating the batch script.
- We will begin by adding a cluster for the RStudio app to use. You do this by editing the
form.ymlin your favorite editor as such:
# ~/ondemand/dev/bc_example_rstudio/form.yml --- cluster: "my_cluster" form: - bc_account - bc_queue - bc_num_hours - bc_num_slots - bc_email_on_startedwhere we replace
my_clusterwith a valid cluster that corresponds to a cluster configuration file located under/etc/ood/config/clusters.d/my_cluster.yml.
- Next we will modify the runtime environment to allow RStudio to launch inside a Singularity container. There are two ways to accomplish this, and both modify the file
~/ondemand/dev/bc_example_rstudio/template/script.sh.erb.
If you are not using LMod, then in the function
setup_envreplace the value forRSTUDIO_SERVER_IMAGEwith the absolute path to the Singularity image, andSINGULARITY_BINDPATHwith all the directories that contain dependencies for RStudio server and R. Discovering those paths may benefit from usingptraceorlsof. Finally ensure thatRandrserverare in thePATH.If you are using LMod then create a module like the following:
-- $path/to/lmodfiles/rstudio_container/v0.0.1.lua help([[ rstudio - loads rstudio with singularity environment for ondemand apps ]]) whatis("loads rstudio with singularity environment for ondemand") setenv("RSTUDIO_SERVER_IMAGE","/usr/local/project/ondemand/singularity/rstudio/rstudio_launcher_centos7.simg") setenv("SINGULARITY_BINDPATH","/usr/lib,/usr/lib64,/bin,/usr/share,/usr/include") append_path("PATH", "/usr/lib/rstudio-server/bin)Then replace the exports in the function
setup_envwith the appropriatemodule use $module_pathandmodule load rstudio_container/v0.0.1.setup_env () { # Additional environment which could be moved into a module # Change these to suit # export RSTUDIO_SERVER_IMAGE="/apps/rserver-launcher-centos7.simg" # export SINGULARITY_BINDPATH="/usr/lib,/usr/lib64,/bin,/usr/share,/usr/include" # export PATH="$PATH:/usr/lib/rstudio-server/bin" # export SINGULARITYENV_PATH="$PATH" module use "$path/to/lmodfiles" module load rstudio_container/v0.0.1 } setup_env
Note
It is possible to set the environment without using a module system, by setting the variables in ~/ondemand/dev/bc_example_rstudio/template/script.sh.erb.
Warning
There was a breaking change between Singularity 2.x and 3.x with how a host PATH may be propagated to the guest. In version 2.x you must export PATH as SINGULARITYENV_PATH in order for the PATH inside the container to include rserver. In version 3.x PATH alone is sufficient.