Slurm Factory Examples
This page contains practical examples demonstrating how to use Slurm Factory for various HPC deployment scenarios with the new Typer CLI.
Basic Usage Examples
Building Default Slurm Package
# Build latest Slurm (25.05) with CPU optimizations
slurm-factory build
# Equivalent explicit command
slurm-factory build --slurm-version 25.05
Building Specific Versions
# Build Slurm 24.11
slurm-factory build --slurm-version 24.11
# Build Slurm 23.11
slurm-factory build --slurm-version 23.11
# Build legacy Slurm 23.02
slurm-factory build --slurm-version 23.02
Build Type Examples
GPU-Enabled Builds
# Build with CUDA/ROCm support (~15-25GB)
slurm-factory build --gpu
# GPU build for specific version
slurm-factory build --slurm-version 24.11 --gpu
Minimal Builds
# Build minimal package without OpenMPI (~1-2GB)
slurm-factory build --minimal
# Minimal build for specific version
slurm-factory build --slurm-version 25.05 --minimal
Verification Builds (CI/Testing)
# Build with relocatability verification
slurm-factory build --verify
# Verification build with GPU support
slurm-factory build --verify --gpu
Advanced Usage Examples
Project Management
# Use custom LXD project name
slurm-factory --project-name my-hpc-project build
# Set project via environment variable
export IF_PROJECT_NAME=production-slurm
slurm-factory build --slurm-version 25.05
Verbose Debugging
# Enable verbose output for debugging
slurm-factory --verbose build
# Verbose output with custom project
slurm-factory --verbose --project-name debug-builds build --minimal
Build Management
# Clean build instances (keep base instances for speed)
slurm-factory clean
# Full cleanup (removes everything, slower next build)
slurm-factory clean --full
# Clean specific project
slurm-factory --project-name my-project clean --full
Deployment Examples
Standard Deployment
# Extract software package to /opt/slurm
sudo mkdir -p /opt/slurm
sudo tar -xzf ~/.slurm-factory/builds/slurm-25.05-software.tar.gz -C /opt/slurm/
# Extract module files
sudo tar -xzf ~/.slurm-factory/builds/slurm-25.05-module.tar.gz -C /usr/share/lmod/lmod/modulefiles/
# Load the module
module load slurm/25.05
Custom Path Deployment
# Deploy to custom shared filesystem location
sudo mkdir -p /shared/apps/slurm
sudo tar -xzf ~/.slurm-factory/builds/slurm-25.05-software.tar.gz -C /shared/apps/slurm/
# Set runtime prefix override
export SLURM_INSTALL_PREFIX=/shared/apps/slurm/software
module load slurm/25.05
Multi-Version Deployment
# Deploy multiple versions side-by-side
sudo tar -xzf ~/.slurm-factory/builds/slurm-25.05-software.tar.gz -C /opt/
sudo tar -xzf ~/.slurm-factory/builds/slurm-24.11-software.tar.gz -C /opt/
# Extract all module files
sudo tar -xzf ~/.slurm-factory/builds/slurm-25.05-module.tar.gz -C /usr/share/lmod/lmod/modulefiles/
sudo tar -xzf ~/.slurm-factory/builds/slurm-24.11-module.tar.gz -C /usr/share/lmod/lmod/modulefiles/
# List available versions
module avail slurm
# Load specific version
module load slurm/24.11
CI/CD Integration Examples
GitHub Actions
name: Build Slurm Package
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup LXD
run: |
sudo snap install lxd
sudo lxd init --auto
- name: Install Slurm Factory
run: pip install slurm-factory
- name: Build and Verify Slurm Package
run: |
slurm-factory --verbose build --verify
- name: Test Package
run: |
# Custom package validation
tar -tzf ~/.slurm-factory/builds/slurm-*-software.tar.gz | head -10
Docker Integration
FROM ubuntu:24.04
# Install dependencies
RUN apt-get update && apt-get install -y python3-pip
# Install Slurm Factory
RUN pip install slurm-factory
# Setup LXD (requires privileged container)
RUN snap install lxd
# Build script
COPY build-slurm.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/build-slurm.sh
CMD ["/usr/local/bin/build-slurm.sh"]
Error Handling Examples
Build Error Recovery
# If build fails, try cleaning first
slurm-factory clean
slurm-factory build --slurm-version 25.05
# For persistent issues, full cleanup
slurm-factory clean --full
slurm-factory --verbose build --slurm-version 25.05
Project Conflicts
# Check for existing projects
lxc project list
# Use isolated project for testing
slurm-factory --project-name test-builds build --minimal
# Clean up test project
slurm-factory --project-name test-builds clean --full
Performance Optimization Examples
Leveraging Build Cache
# First build (45-90 minutes)
time slurm-factory build --slurm-version 25.05
# Subsequent builds with cache (5-15 minutes)
time slurm-factory build --slurm-version 25.05 --gpu
time slurm-factory build --slurm-version 24.11
Parallel Project Builds
# Build multiple versions in parallel using separate projects
slurm-factory --project-name build-25-05 build --slurm-version 25.05 &
slurm-factory --project-name build-24-11 build --slurm-version 24.11 &
wait
# Clean all projects
slurm-factory --project-name build-25-05 clean --full
slurm-factory --project-name build-24-11 clean --full
Python API Examples
Basic Python Usage
from slurm_factory.builder import build
from slurm_factory.constants import SlurmVersion
from slurm_factory.config import Settings
import typer
# Setup context
ctx = typer.Context(typer.Typer())
ctx.obj = {
"settings": Settings(),
"project_name": "my-python-project"
}
# Build programmatically
try:
build(
ctx=ctx,
slurm_version=SlurmVersion.v25_05,
gpu=False,
minimal=False,
verify=True,
base_only=False
)
print("Build completed successfully!")
except Exception as e:
print(f"Build failed: {e}")
Configuration Management
from slurm_factory.config import Settings
# Initialize with custom project
settings = Settings(project_name="production-slurm")
# Ensure cache directories exist
settings.ensure_cache_dirs()
print(f"Cache directory: {settings.home_cache_dir}")
print(f"Project name: {settings.project_name}")
For more detailed documentation, please refer to our API Reference and Architecture Guide.