Skip to content

Commit

Permalink
Merge pull request #9 from ualberta-rcg/main
Browse files Browse the repository at this point in the history
update
  • Loading branch information
rahimkhoja authored Jan 18, 2025
2 parents cec479e + 3b5ec3b commit d83e363
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 42 deletions.
43 changes: 22 additions & 21 deletions slurmdbd/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,11 @@ ENV SLURM_VERSION=24-05-5-1
ENV PYTHON_VERSION=3.12.8
ENV MUNGE_VERSION=0.5.14
ENV PMIX_VERSION=5.0.6
ENV HWLOC_VERSION=2.9.3
ENV PREFIX=/opt/software/slurm
ENV MUNGE_PREFIX=/opt/software/munge
ENV PMIX_PREFIX=/opt/software/pmix
ENV HWLOC_PREFIX=/opt/software/hwloc
ENV PATH=/usr/local/ssl/bin:$PREFIX/bin:$PATH
ENV PATH=/usr/local/ssl/bin:$PREFIX/bin:/opt/software/slurm/sbin:${PATH:-}
ENV LD_LIBRARY_PATH=/usr/local/ssl/lib:${LD_LIBRARY_PATH:-}
ENV PATH=/opt/software/slurm/sbin:${PATH:-}

# Install dependencies
RUN apt-get update && apt-get install -y --no-install-recommends \
Expand All @@ -24,11 +21,10 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
libhwloc-dev \
liblua5.3-dev \
mariadb-client \
libmunge-dev \
#libmunge-dev \
libnuma-dev \
libpam0g-dev \
libpmix-dev \
#libpmix-dev \
libreadline-dev \
rrdtool \
libyaml-dev \
Expand All @@ -44,8 +40,22 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
autoconf \
automake \
libssl-dev \
libtool

libtool \
libhdf5-dev \
libmariadb-dev \
libjwt-dev \
libreadline-dev \
libhttp-parser-dev \
libjson-c-dev \
libyaml-dev \
libgtk2.0-dev \
libcurl4-openssl-dev \
libbpf-dev \
libdbus-1-dev \
libibumad-dev \
libfreeipmi17 \
libibmad-dev

# Add runtime configurations, users and groups for Munge and Slurm
RUN mkdir -p /etc/slurm /var/spool/slurm /var/log/slurm && \
groupadd -r slurm && useradd -r -g slurm -s /bin/false slurm && \
Expand Down Expand Up @@ -82,14 +92,6 @@ RUN mkdir -p /usr/src && cd /usr/src && \
tar -xzf pmix-${PMIX_VERSION}.tar.gz && cd pmix-${PMIX_VERSION} && \
./configure --prefix=$PMIX_PREFIX && make -j$(nproc) && make install

# Install HWLOC from source (if needed for Slurm)
RUN mkdir -p /usr/src && cd /usr/src && \
wget https://download.open-mpi.org/release/hwloc/v${HWLOC_VERSION%.*}/hwloc-${HWLOC_VERSION}.tar.gz && \
tar -xzf hwloc-${HWLOC_VERSION}.tar.gz && \
cd hwloc-${HWLOC_VERSION} && \
./configure --prefix=$HWLOC_PREFIX && make -j$(nproc) && make install


# Download and build Slurm
RUN mkdir -p /usr/src && cd /usr/src && \
curl -LO https://github.com/SchedMD/slurm/archive/refs/tags/slurm-${SLURM_VERSION}.tar.gz && \
Expand All @@ -109,18 +111,17 @@ COPY entrypoint.sh /entrypoint.sh

# Clean Up
RUN chmod +x /entrypoint.sh && \
chown slurm:slurm /etc/slurm /var/spool/slurm /var/log/slurm && \
mkdir -p /etc/munge/ && \
chown munge:munge -R /etc/munge && \
chmod 400 -R /etc/munge/ && \
rm -rf /usr/src/* /tmp/* /var/tmp/* && \
rm -rf /usr/share/doc /usr/share/man /usr/share/locale /usr/share/info && \
apt-get purge -y \
build-essential \
cmake \
git \
gcc \
curl \
wget \
make \
man-db \
linux-headers-amd64 \
pkg-config \
autoconf \
Expand Down
53 changes: 32 additions & 21 deletions slurmdbd/entrypoint.sh
Original file line number Diff line number Diff line change
@@ -1,39 +1,50 @@
#!/bin/bash

# Export default values if not already set
export AUTH_TYPE=${AUTH_TYPE:-auth/munge}
export DBD_HOST=${DBD_HOST:-localhost}
export DBD_PORT=${DBD_PORT:-6819}
export STORAGE_TYPE=${STORAGE_TYPE:-accounting_storage/mysql}
export STORAGE_HOST=${STORAGE_HOST:-localhost}
export STORAGE_PORT=${STORAGE_PORT:-3306}
export STORAGE_USER=${STORAGE_USER:-slurm}
export STORAGE_PASS=${STORAGE_PASS:-password}
export STORAGE_LOC=${STORAGE_LOC:-slurm_acct_db}
export LOG_FILE=${LOG_FILE:-/var/log/slurm/slurmdbd.log}
export PID_FILE=${PID_FILE:-/var/run/slurmdbd.pid}
export SLURM_USER=${SLURM_USER:-slurm}
export DEBUG_LEVEL=${DEBUG_LEVEL:-debug}
#export AUTH_TYPE=${AUTH_TYPE:-auth/munge}
#export DBD_HOST=${DBD_HOST:-localhost}
#export DBD_PORT=${DBD_PORT:-6819}
#export STORAGE_TYPE=${STORAGE_TYPE:-accounting_storage/mysql}
#export STORAGE_HOST=${STORAGE_HOST:-localhost}
#export STORAGE_PORT=${STORAGE_PORT:-3306}
#export STORAGE_USER=${STORAGE_USER:-slurm}
#export STORAGE_PASS=${STORAGE_PASS:-password}
#export STORAGE_LOC=${STORAGE_LOC:-slurm_acct_db}
#export LOG_FILE=${LOG_FILE:-/var/log/slurm/slurmdbd.log}
#export PID_FILE=${PID_FILE:-/var/run/slurmdbd.pid}
#export SLURM_USER=${SLURM_USER:-slurm}
#export DEBUG_LEVEL=${DEBUG_LEVEL:-debug}

# Redirect logs to stdout and stderr for Kubernetes
if [ -z "${LOG_FILE}" ] || [ "${LOG_FILE}" = "/var/log/slurm/slurm-dbd.log" ]; then
export LOG_FILE=/dev/stdout
fi

mkdir -p /var/log/slurm/
mkdir -p /var/run/munge/
touch /var/log/slurm/slurm-dbd.log

# Read and substitute the template
while IFS= read -r line; do
eval "echo \"$line\""
done < /etc/slurm/slurmdbd.conf.template > /etc/slurm/slurmdbd.conf

chmod 600 /etc/slurm/slurmdbd.conf
chmod 400 /etc/munge/munge.key
chown munge:munge /etc/munge/munge.key
chown munge:munge -R /var/run/munge/

# Slurm
mkdir -p /var/log/slurm/
touch /var/log/slurm/slurm-dbd.log
chown slurm:slurm /etc/slurm/slurmdbd.conf
chown slurm:slurm -R /var/log/slurm
chmod 600 /etc/slurm/slurmdbd.conf

# Munge
mkdir -p /var/run/munge/
mkdir -p /var/lib/munge/
chmod 400 /etc/munge/munge/munge.key
chmod 700 /var/lib/munge
chmod 700 /var/run/munge/
chmod 750 -R /etc/munge
chown munge:munge -R /etc/munge
chown munge:munge -R /var/run/munge
chown munge:munge -R /var/lib/munge

su -s /bin/bash -c "/opt/software/munge/sbin/munged --foreground -f &" munge

# Run slurmdbd
exec slurmdbd "$@"

0 comments on commit d83e363

Please sign in to comment.