slurmctld host, usually your login node) and is the only
process that talks to Expanse. Workers run a lightweight sampler with no
credential and no outbound network access; samples travel over your shared
filesystem.
Start in the console’s Add compute panel (or with
expanse compute register): it
shows the short-lived install token plus your deployment’s control-plane and
data-plane URLs and the pinned daemon version, which this guide’s commands
take. The token is prompted for during install; it never goes on a command
line.
Running AWS ParallelCluster? Use the
ParallelCluster guide instead; it removes
the shared-prefix step.
Prefer to delegate? Copy this into an AI assistant with shell access on the login node; it fetches this guide itself, so it always follows the current steps.
Prerequisites
- Console access in your Expanse organisation (any member can register).
- Root (or sudo) on the controller node.
- A shared filesystem mounted at the same path on every node, for example
/srv/expanseon NFS or Lustre. Single-node clusters can use local disk. - Outbound HTTPS from the controller only. Workers need none.
1. Register the compute
In the console, open Compute → Add compute, pick SLURM, and generate an install token. Keep the panel open: it polls registration state live and shows the endpoint URLs used below.2. Install the CLI on the controller node
3. Install the controller daemon
On the controller node, using the control-plane and data-plane URLs and the daemon version from the Add compute panel:--daemon-version downloads the daemon release and verifies its signed
manifest, checksum, and cosign signature against Expanse’s pinned release
signing key before anything reaches the shared prefix. Air-gapped deployment?
Copy the release archive and its .sig from your bundle mirror and pass
--daemon-binary <path> instead.
The install preflights everything (paths, SLURM config discovery, hook plan,
permissions) before exchanging the token, so a failed preflight never
burns it. It places the binary and Prolog/Epilog hooks under the shared
prefix, installs the systemd unit, starts the daemon, and waits for the first
heartbeat. On failure it rolls back its own changes.
--patch-slurm-conf=true lets the install apply the hook wiring it planned;
without it, all SLURM-owned config is read-only and the plan is printed for
your config management to apply.
4. Install the sampler on each worker
No token needed; the sampler holds no credential:5. Verify
The compute flips to active in the console when the token is exchanged, and shows its first heartbeat within a minute of the daemon starting. Submit any job withsbatch as normal; capture is automatic.
Optional: Python stack attribution
The install never downloads third-party binaries or changes ptrace policy. If you make a pinnedpy-spy 0.4.2 available on PATH (or EXPANSE_PYSPY)
on every node that runs jobs, with ptrace permitted, Python stack attribution
switches on; otherwise it is recorded as unavailable and everything else
works.