From 2e6ea0079ac2b4951c560913cdfed359843df8af Mon Sep 17 00:00:00 2001 From: Dane Kennedy Date: Wed, 23 Sep 2026 12:06:30 +0200 Subject: [PATCH 1/3] Add libwebp-dev to the RStudio recipe Needed by R imaging packages that link WebP (ragg, magick). Ported from PR #168; the package name is the same on every Ubuntu release built here. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01FLJRERiNvARR3e8ftXi5TG --- ansible/roles/containers/templates/common/RStudio.def | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/roles/containers/templates/common/RStudio.def b/ansible/roles/containers/templates/common/RStudio.def index 7cd93d5..7c916b3 100644 --- a/ansible/roles/containers/templates/common/RStudio.def +++ b/ansible/roles/containers/templates/common/RStudio.def @@ -118,6 +118,7 @@ From: {{ base_container_image }} libssl-dev \ libtiff5-dev \ libuv1-dev \ + libwebp-dev \ libxml2-dev \ libxt-dev \ netcdf-bin \ From bb6fcbb2457de43671513d4a8c5b57bf4b24615c Mon Sep 17 00:00:00 2001 From: Dane Kennedy Date: Wed, 23 Sep 2026 12:07:15 +0200 Subject: [PATCH 2/3] Add RStudio 2026.09.0-174 with R 4.6.1 on Ubuntu noble Newest RStudio Server release; the .deb is published under Posit's jammy path for Ubuntu 22 and 24. R 4.6.1 is still current on CRAN. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01FLJRERiNvARR3e8ftXi5TG --- ansible/roles/containers/tasks/common/main.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ansible/roles/containers/tasks/common/main.yml b/ansible/roles/containers/tasks/common/main.yml index 8a31b4a..142b14b 100644 --- a/ansible/roles/containers/tasks/common/main.yml +++ b/ansible/roles/containers/tasks/common/main.yml @@ -34,6 +34,11 @@ rstudio_deb_release: jammy r_version: 4.6.1 rstudio_version: 2026.07.1-147 + - base_container_name: ubuntu-noble-compile + base_container_version_name: noble + rstudio_deb_release: jammy + r_version: 4.6.1 + rstudio_version: 2026.09.0-174 ansible.builtin.include_tasks: file: RStudio.yaml loop: "{{ rstudio_versions }}" From 9be1a85bdc22cb203dd00398aca855e6bb5cbf76 Mon Sep 17 00:00:00 2001 From: Dane Kennedy Date: Wed, 23 Sep 2026 12:10:46 +0200 Subject: [PATCH 3/3] Make the SSH jump host in container instructions configurable The RStudio and PopGen recipes printed slurm.ilifu.ac.za in their connection instructions. Move it to a login_host var in group_vars/all, defaulting to that host, so another site or a test deployment can override it with -e or in the inventory. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01FLJRERiNvARR3e8ftXi5TG --- ansible/group_vars/all | 4 ++++ ansible/roles/containers/templates/bio/PopGen.def | 4 ++-- ansible/roles/containers/templates/common/RStudio.def | 4 ++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/ansible/group_vars/all b/ansible/group_vars/all index 09181da..0284581 100644 --- a/ansible/group_vars/all +++ b/ansible/group_vars/all @@ -52,6 +52,10 @@ common_modules: "{{ modules_dir }}/common" admin_group: "idia-admins" +# SSH jump host printed in the connection instructions of interactive containers +# (RStudio, PopGen). Override with -e login_host=... or in the inventory. +login_host: "slurm.ilifu.ac.za" + # 4.4.1 is built --without-suid (see roles/compiled/tasks/common/singularity.yaml); # 4.1.0 still ships a setuid starter-suid. Note 4.4.2 is registered in # roles/compiled/tasks/common/main.yml but is not yet installed on /software. diff --git a/ansible/roles/containers/templates/bio/PopGen.def b/ansible/roles/containers/templates/bio/PopGen.def index 62ba78e..1ebb27b 100644 --- a/ansible/roles/containers/templates/bio/PopGen.def +++ b/ansible/roles/containers/templates/bio/PopGen.def @@ -23,7 +23,7 @@ From: {{ base_container_image }} HOST=$( /bin/hostname ) echo "Running rserver on port ${PORT}" echo "To connect to this server run this on your local machine:" - echo " ssh -A ${USER}@${HOST} -o \"ProxyCommand=ssh ${USER}@slurm.ilifu.ac.za nc ${HOST} 22\" -L8081:localhost:${PORT}" + echo " ssh -A ${USER}@${HOST} -o \"ProxyCommand=ssh ${USER}@{{ login_host }} nc ${HOST} 22\" -L8081:localhost:${PORT}" echo "then vist http://localhost:8081 in your browser and use the username \"${USER}\" to login with the password \"${RSTUDIO_PASSWORD}\"" echo "(You may need to choose a different port (other than 8081), so remember to change this in both the ssh and browser)" exec rserver --auth-none 0 --auth-pam-helper rstudio_auth --secure-cookie-key-file /tmp/rstudio-server-${USER}/secure-cookie.key --www-port ${PORT} "${@}" @@ -70,7 +70,7 @@ From: {{ base_container_image }} HOST=$( /bin/hostname ) echo "Running rserver on port ${PORT}" echo "To connect to this server run this on your local machine:" - echo " ssh -A ${USER}@${HOST} -o \"ProxyCommand=ssh ${USER}@slurm.ilifu.ac.za nc ${HOST} 22\" -L8081:localhost:${PORT}" + echo " ssh -A ${USER}@${HOST} -o \"ProxyCommand=ssh ${USER}@{{ login_host }} nc ${HOST} 22\" -L8081:localhost:${PORT}" echo "then vist http://localhost:8081 in your browser and use the username \"${USER}\" to login with the password \"${RSTUDIO_PASSWORD}\"" echo "(You may need to choose a different port (other than 8081), so remember to change this in both the ssh and browser)" exec rserver --auth-none 0 --auth-pam-helper rstudio_auth --secure-cookie-key-file /tmp/rstudio-server-${USER}/secure-cookie.key --www-port ${PORT} "${@}" diff --git a/ansible/roles/containers/templates/common/RStudio.def b/ansible/roles/containers/templates/common/RStudio.def index 7c916b3..89eb2f9 100644 --- a/ansible/roles/containers/templates/common/RStudio.def +++ b/ansible/roles/containers/templates/common/RStudio.def @@ -24,7 +24,7 @@ From: {{ base_container_image }} HOST=$( /bin/hostname ) echo "Running rserver on port ${PORT}" echo "To connect to this server run this on your local machine:" - echo " ssh -A ${USER}@${HOST} -o \"ProxyCommand=ssh ${USER}@slurm.ilifu.ac.za nc ${HOST} 22\" -L8081:localhost:${PORT}" + echo " ssh -A ${USER}@${HOST} -o \"ProxyCommand=ssh ${USER}@{{ login_host }} nc ${HOST} 22\" -L8081:localhost:${PORT}" echo "then visit http://localhost:8081 in your browser and use the username \"${USER}\" to login with the password \"${RSTUDIO_PASSWORD}\"" echo "(You may need to choose a different port (other than 8081), so remember to change this in both the ssh and browser)" exec rserver --server-user ${USER} --auth-none 0 --auth-pam-helper rstudio_auth --secure-cookie-key-file ${HOME}/.RStudio.rserver/secure-cookie.key --www-port ${PORT} --server-data-dir ${HOME}/.RStudio.rserver/data "${@}" @@ -38,7 +38,7 @@ From: {{ base_container_image }} HOST=$( /bin/hostname ) echo "Running rserver on port ${PORT}" echo "To connect to this server run this on your local machine:" - echo " ssh -A ${USER}@${HOST} -o \"ProxyCommand=ssh ${USER}@slurm.ilifu.ac.za nc ${HOST} 22\" -L8081:localhost:${PORT}" + echo " ssh -A ${USER}@${HOST} -o \"ProxyCommand=ssh ${USER}@{{ login_host }} nc ${HOST} 22\" -L8081:localhost:${PORT}" echo "then visit http://localhost:8081 in your browser and use the username \"${USER}\" to login with the password \"${RSTUDIO_PASSWORD}\"" echo "(You may need to choose a different port (other than 8081), so remember to change this in both the ssh and browser)" exec rserver --server-user ${USER} --auth-none 0 --auth-pam-helper rstudio_auth --secure-cookie-key-file ${HOME}/.RStudio.rserver/secure-cookie.key --www-port ${PORT} --server-data-dir ${HOME}/.RStudio.rserver/data "${@}"