From 1922bd4255bdce46da5f08ada9bca33872adf86b Mon Sep 17 00:00:00 2001 From: Enis Afgan <afgane@gmail.com> Date: Fri, 24 May 2019 12:37:33 -0400 Subject: [PATCH] Add Slurm to the CVMFS container --- docker/cvmfs/Dockerfile | 20 ++++++++++++++------ docker/cvmfs/README.md | 5 +++++ docker/testing/configure_slurm.py | 13 ++++++++++--- 3 files changed, 29 insertions(+), 9 deletions(-) create mode 100644 docker/cvmfs/README.md diff --git a/docker/cvmfs/Dockerfile b/docker/cvmfs/Dockerfile index 03ae9475..deb7f213 100644 --- a/docker/cvmfs/Dockerfile +++ b/docker/cvmfs/Dockerfile @@ -15,14 +15,17 @@ RUN apt-get update \ # Install packages && apt-get update \ && apt-get install -y --no-install-recommends gcc python-setuptools \ - python-dev python-pip cvmfs cvmfs-config-default \ + python-dev python-pip \ + cvmfs cvmfs-config-default \ + slurm-llnl slurm-drmaa-dev \ # Install Pulsar Python requirements - && pip install --no-cache-dir -r /pulsar/requirements.txt \ + && pip install --no-cache-dir -r /pulsar/requirements.txt drmaa \ # Remove build deps and cleanup && apt-get -y remove python-dev gcc wget lsb-release \ && apt-get -y autoremove \ && apt-get autoclean \ - && rm -rf /var/lib/apt/lists/* /var/log/dpkg.log + && rm -rf /var/lib/apt/lists/* /var/log/dpkg.log \ + && /usr/sbin/create-munge-key # Create pulsar user environment RUN adduser --disabled-password --gecos '' pulsar \ @@ -32,10 +35,13 @@ RUN adduser --disabled-password --gecos '' pulsar \ WORKDIR /pulsar/ # Add files to the image -ADD . /pulsar +ADD . /pulsar/ # Change ownership to pulsar & configure CVMFS RUN python setup.py install \ && pulsar-config --auto_conda --host 0.0.0.0 \ + && echo "export DRMAA_LIBRARY_PATH=/usr/lib/slurm-drmaa/lib/libdrmaa.so" >> local_env.sh \ + && cp docker/cvmfs/app.yml . \ + && cp ./docker/testing/configure_slurm.py /usr/sbin/configure_slurm.py \ && chown -R pulsar:pulsar /pulsar \ && chmod +x /usr/local/bin/pulsar \ && cp /pulsar/docker/cvmfs/default.local /etc/cvmfs/ \ @@ -47,5 +53,7 @@ RUN python setup.py install \ EXPOSE 8913 # Must run CVMFS setup otherwise autofs does not get configured nor automount -# starts. Then switch to less-priviledged user for running Pulsar. -CMD /usr/bin/cvmfs_config setup; su pulsar -c "/usr/local/bin/pulsar" +# starts. Then start Slurm and switch to a less-priviledged user for Pulsar. +CMD /usr/bin/cvmfs_config setup; service munge start; \ + python /usr/sbin/configure_slurm.py; service slurmd start; \ + service slurmctld start; su pulsar -c "/usr/local/bin/pulsar" diff --git a/docker/cvmfs/README.md b/docker/cvmfs/README.md new file mode 100644 index 00000000..fa0aaae2 --- /dev/null +++ b/docker/cvmfs/README.md @@ -0,0 +1,5 @@ +Build this image from the repo root folder using the following command: + +``` +docker build -f docker/cvmfs/Dockerfile -t galaxy/pulsar:dev . +``` \ No newline at end of file diff --git a/docker/testing/configure_slurm.py b/docker/testing/configure_slurm.py index d1ca485b..f768e616 100644 --- a/docker/testing/configure_slurm.py +++ b/docker/testing/configure_slurm.py @@ -1,7 +1,12 @@ +""" +This file is also being used by the GalaxyCloudRunner (gcr) Docker image. +""" + +from getpass import getuser +from multiprocessing import cpu_count from socket import gethostname from string import Template from subprocess import call -from getpass import getuser SLURM_CONFIG_TEMPLATE = ''' # slurm.conf file generated by configurator.html. @@ -75,13 +80,15 @@ SlurmctldDebug=3 #SlurmctldLogFile= SlurmdDebug=3 #SlurmdLogFile= -NodeName=$hostname CPUs=1 State=UNKNOWN +NodeName=$hostname CPUs=$cpus State=UNKNOWN PartitionName=debug Nodes=$hostname Default=YES MaxTime=INFINITE State=UP ''' def main(): - template_params = {"hostname": gethostname(), "user": getuser()} + template_params = {"hostname": gethostname(), + "user": getuser(), + "cpus": cpu_count()} config_contents = Template(SLURM_CONFIG_TEMPLATE).substitute(template_params) open("/etc/slurm-llnl/slurm.conf", "w").write(config_contents) -- GitLab