mirror of
https://github.com/ClusterCockpit/cc-docker.git
synced 2025-07-23 21:31:42 +02:00
Unix port based slurmrest service+
This commit is contained in:
@@ -1,10 +1,15 @@
|
||||
FROM clustercockpit/slurm.base:24.05.3
|
||||
LABEL org.opencontainers.image.authors="jan.eitzinger@fau.de"
|
||||
|
||||
ARG uid_u
|
||||
ARG gid_g
|
||||
ENV uid_u=${uid_u}
|
||||
ENV gid_g=${gid_g}
|
||||
|
||||
# clean up
|
||||
RUN rm -f /root/rpmbuild/RPMS/slurm-*.rpm \
|
||||
&& yum clean all \
|
||||
&& rm -rf /var/cache/yum
|
||||
|
||||
COPY docker-entrypoint.sh /docker-entrypoint.sh
|
||||
ENTRYPOINT ["/docker-entrypoint.sh"]
|
||||
ENTRYPOINT /docker-entrypoint.sh $uid_u $gid_g
|
||||
|
@@ -4,6 +4,18 @@ set -e
|
||||
# Determine the system architecture dynamically
|
||||
ARCH=$(uname -m)
|
||||
SLURM_VERSION="24.05.3"
|
||||
SLURMRESTD="/tmp/slurmrestd.socket"
|
||||
# SLURM_JWT=daemon
|
||||
|
||||
uid_u="${1:-}"
|
||||
gid_g="${2:-}"
|
||||
|
||||
echo Your container args are: "$@"
|
||||
|
||||
# Change the uid
|
||||
# usermod -u "${uid_u}" slurm
|
||||
# Change the gid
|
||||
# groupmod -g "${gid_g}" slurm
|
||||
|
||||
# start sshd server
|
||||
_sshd_host() {
|
||||
@@ -14,7 +26,6 @@ _sshd_host() {
|
||||
/usr/sbin/sshd
|
||||
}
|
||||
|
||||
# start munge and generate key
|
||||
# start munge using existing key
|
||||
_munge_start_using_key() {
|
||||
if [ ! -f /.secret/munge.key ]; then
|
||||
@@ -37,6 +48,48 @@ _munge_start_using_key() {
|
||||
remunge
|
||||
}
|
||||
|
||||
_enable_slurmrestd() {
|
||||
|
||||
cd /tmp
|
||||
mkdir statesave
|
||||
dd if=/dev/random of=/tmp/statesave/jwt_hs256.key bs=32 count=1
|
||||
chown slurm:slurm /tmp/statesave/jwt_hs256.key
|
||||
chmod 0600 /tmp/statesave/jwt_hs256.key
|
||||
chown slurm:slurm /tmp/statesave
|
||||
chmod 0755 /tmp/statesave
|
||||
|
||||
cat >/usr/lib/systemd/system/slurmrestd.service <<EOF
|
||||
[Unit]
|
||||
Description=Slurm REST daemon
|
||||
After=network-online.target slurmctld.service
|
||||
Wants=network-online.target
|
||||
ConditionPathExists=/etc/slurm/slurm.conf
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
EnvironmentFile=-/etc/sysconfig/slurmrestd
|
||||
EnvironmentFile=-/etc/default/slurmrestd
|
||||
# slurmrestd should not run as root or the slurm user.
|
||||
# Please either use the -u and -g options in /etc/sysconfig/slurmrestd or
|
||||
# /etc/default/slurmrestd, or explicitly set the User and Group in this file
|
||||
# an unpriviledged user to run as.
|
||||
User=slurm
|
||||
Restart=always
|
||||
RestartSec=5
|
||||
# Group=
|
||||
# Default to listen on both socket and slurmrestd port
|
||||
ExecStart=/usr/sbin/slurmrestd -f /etc/config/slurmrestd.conf -a rest_auth/jwt $SLURMRESTD_OPTIONS -vvvvvv -s dbv0.0.39,v0.0.39 unix:$SLURMRESTD 0.0.0.0:6820
|
||||
# /usr/sbin/slurmrestd -f /etc/config/slurmrestd.conf -vvvvvv -a rest_auth/jwt -s dbv0.0.39,v0.0.39 -u slurm unix:$SLURMRESTD 0.0.0.0:6820
|
||||
# Enable auth/jwt be default, comment out the line to disable it for slurmrestd
|
||||
Environment="SLURM_JWT=daemon"
|
||||
ExecReload=/bin/kill -HUP $MAINPID
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
|
||||
EOF
|
||||
}
|
||||
|
||||
# run slurmrestd
|
||||
_slurmrestd() {
|
||||
cd /root/rpmbuild/RPMS/$ARCH
|
||||
@@ -46,20 +99,23 @@ _slurmrestd() {
|
||||
slurm-torque-$SLURM_VERSION*.$ARCH.rpm \
|
||||
slurm-slurmctld-$SLURM_VERSION*.$ARCH.rpm \
|
||||
slurm-slurmrestd-$SLURM_VERSION*.$ARCH.rpm
|
||||
|
||||
echo -n "checking for slurmdbd.conf"
|
||||
while [ ! -f /.secret/slurmdbd.conf ]; do
|
||||
echo -n "."
|
||||
sleep 1
|
||||
done
|
||||
echo ""
|
||||
# mkdir -p /var/spool/slurm/ctld /var/spool/slurm/d /var/log/slurm /etc/slurm
|
||||
# chown -R slurm: /var/spool/slurm/ctld /var/spool/slurm/d /var/log/slurm
|
||||
|
||||
mkdir -p /etc/config /var/spool/slurm /var/spool/slurm/restd /var/spool/slurm/restd/rest
|
||||
chown -R slurm: /etc/config /var/spool/slurm /var/spool/slurm/restd /var/spool/slurm/restd/rest
|
||||
mkdir -p /etc/config /var/spool/slurm /var/spool/slurm/restd /var/spool/slurm/restd/rest /var/run/slurm
|
||||
chown -R slurm: /etc/config /var/spool/slurm /var/spool/slurm/restd /var/spool/slurm/restd/rest /var/run/slurm
|
||||
chmod 755 /var/run/slurm
|
||||
|
||||
touch /var/log/slurmrestd.log
|
||||
chown slurm: /var/log/slurmrestd.log
|
||||
chown slurm: /tmp
|
||||
chmod 777 /tmp
|
||||
|
||||
if [[ ! -f /home/config/slurmrestd.conf ]]; then
|
||||
echo "### Missing slurm.conf ###"
|
||||
exit
|
||||
@@ -67,11 +123,31 @@ _slurmrestd() {
|
||||
echo "### use provided slurmrestd.conf ###"
|
||||
cp /home/config/slurmrestd.conf /etc/config/slurmrestd.conf
|
||||
cp /home/config/slurm.conf /etc/config/slurm.conf
|
||||
|
||||
fi
|
||||
|
||||
echo -n "checking for jwt.key"
|
||||
while [ ! -f /.secret/jwt.key ]; do
|
||||
echo -n "."
|
||||
sleep 1
|
||||
done
|
||||
|
||||
sudo yum install -y nc
|
||||
sudo yum install -y procps
|
||||
sudo yum install -y iputils
|
||||
|
||||
cp /.secret/jwt.key /etc/config/jwt.key
|
||||
chown slurm: /etc/config/jwt.key
|
||||
chmod 0400 /etc/config/jwt.key
|
||||
|
||||
echo ""
|
||||
|
||||
sleep 2s
|
||||
export SLURMRESTD=/var/spool/slurm/restd/rest
|
||||
/usr/sbin/slurmrestd -f /etc/config/slurmrestd.conf -s dbv0.0.39,v0.0.39 -vv -u slurm 0.0.0.0:6820
|
||||
echo "Starting slurmrestd"
|
||||
# _enable_slurmrestd
|
||||
# sudo ln -s /usr/lib/systemd/system/slurmrestd.service /etc/systemd/system/multi-user.target.wants/slurmrestd.service
|
||||
|
||||
/usr/sbin/slurmrestd -f /etc/config/slurmrestd.conf -vvvvvv -s dbv0.0.39,v0.0.39 -u slurm unix:$SLURMRESTD 0.0.0.0:6820
|
||||
echo "Started slurmrestd"
|
||||
}
|
||||
|
||||
### main ###
|
||||
|
Reference in New Issue
Block a user