Skip to content

Add SSSD support to slurmctld container - #8

Open
faganihajizada wants to merge 1 commit into
SlinkyProject:mainfrom
faganihajizada:optional_ssd_controller_containers
Open

Add SSSD support to slurmctld container#8
faganihajizada wants to merge 1 commit into
SlinkyProject:mainfrom
faganihajizada:optional_ssd_controller_containers

Conversation

@faganihajizada

@faganihajizada faganihajizada commented Dec 11, 2025

Copy link
Copy Markdown
Contributor

Summary

The published slurmctld image cannot resolve directory users (LDAP/AD via SSSD). slurmctld validates names in reservation and partition ACLs with NSS (getpwnam/getgrnam). Login and slurmd images already ship SSSD; the controller does not, so directory-backed users= scopes fail even when the same users work on login nodes and in slurmdbd.

User-visible failure:

$ scontrol create reservation ... users=<ldap-user> ...
Error creating the reservation: Unspecified error

slurmctld log: Reservation request has invalid user <ldap-user>.

Evidence in the controller container today: passwd: files, no /etc/sssd, id <ldap-user> fails. Same user resolves on login.

This PR adds embedded SSSD to the slurmctld layer across all Slurm versions (25.11, 26.05, master) and OS families (ubuntu24.04, ubuntu26.04, rockylinux9, rockylinux10):

  • Install the same SSSD provider packages as login/slurmd
  • Enable NSS with authselect select sssd --force (no with-mkhomedir; controller has no login path)
  • Reuse the existing sssd supervisord program alongside the existing fakesystemd program
  • Keep the pre-change privilege model (no user=slurm); process UID follows the container UID as before
  • Document SSSD_OPTIONS, mount path, root/securityContext requirements, and expected sssd FATAL when unused

Aligns with guidance on SlinkyProject/slurm-operator#93: keep the operator identity-provider agnostic; customize the image and mount config via controller.podSpec. Sites using SSSD need a root container start so sssd can run.

Breaking Changes

N/A for process UID. Image size/deps grow by the SSSD packages. Without a mounted sssd.conf (or without root), sssd goes FATAL under supervisord and directory users still do not resolve; local /etc/passwd behavior is unchanged.

Testing Notes

  • make validate-bake passes for all bake configs
  • shellcheck / shfmt clean on entrypoints
  • Without sssd.conf / non-root: slurmctld healthy, sssd FATAL (expected)
  • With sssd.conf at /etc/sssd/sssd.conf (root:root 0600) and container as root: id <ldap-user> and scontrol create reservation users=... should succeed

Comment thread schedmd/slurm/25.11/rockylinux9/Dockerfile
Comment thread schedmd/slurm/master/rockylinux9/Dockerfile
slurmctld resolves users and groups in reservation and partition ACLs via NSS.
Without an SSSD NSS source the controller only sees local /etc/passwd, so
directory-backed users= scopes fail.

Bundle SSSD into the slurmctld layer across 25.11, 26.05, and master for
ubuntu and rockylinux variants, matching login/slurmd packages and the
shared sssd supervisord program. Use authselect select sssd --force (no
with-mkhomedir). Keep the existing privilege model (no user=slurm).

Consumers mount /etc/sssd/sssd.conf and must start the container as root
for sssd. Without that, sssd goes FATAL and only local passwd entries resolve.
@faganihajizada
faganihajizada force-pushed the optional_ssd_controller_containers branch from 7475f7d to fa0dec8 Compare August 10, 2026 11:14
@faganihajizada
faganihajizada marked this pull request as ready for review August 10, 2026 15:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants