diff --git a/play.yml b/play.yml index 69e2107..a7c18ca 100644 --- a/play.yml +++ b/play.yml @@ -76,6 +76,9 @@ import_role: name=slurm vars: slurm_user: slurm # or root + slurm_user_accounts: + - name: cobald + dir: /var/lib/cobald num_nodes: "{{slurm_num_nodes}}" extra_nodes: - "{{cobald_container_hostname}}" # from cobald_facts, read or generated diff --git a/roles/cobald/templates/cobald.Dockerfile b/roles/cobald/templates/cobald.Dockerfile index b4256cd..7ff8689 100644 --- a/roles/cobald/templates/cobald.Dockerfile +++ b/roles/cobald/templates/cobald.Dockerfile @@ -11,7 +11,8 @@ RUN git clone $REPOCOBALD /usr/local/src/cobald && \ git clone $REPOTARDIS /usr/local/src/tardis RUN mkdir /etc/cobald /var/log/cobald && \ - useradd -m -d /var/lib/cobald --no-log-init --system cobald && \ + ( getent passwd cobald > /dev/null || \ + useradd -m -d /var/lib/cobald --no-log-init --system cobald ) && \ chown cobald:cobald /var/log/cobald #RUN mkdir /cobald && python3 -m venv /cobald && source /cobald/bin/activate &&\ diff --git a/roles/cobald/vars/cobald-slurm.yml b/roles/cobald/vars/cobald-slurm.yml index ab38387..cbe6924 100644 --- a/roles/cobald/vars/cobald-slurm.yml +++ b/roles/cobald/vars/cobald-slurm.yml @@ -1,5 +1,5 @@ cobald_image_tag: slurm -cobald_docker_base_image: "{{slurm.base_image}}" +cobald_docker_base_image: "slurm:slurmd" cobald_docker_default_command: False cobald_docker_network: "{{slurm.network}}" cobald_domainname: "{{slurm.domain}}" diff --git a/roles/slurm/files/slurm-base.Dockerfile b/roles/slurm/files/slurm-base.Dockerfile index 4873efa..8c41fd8 100644 --- a/roles/slurm/files/slurm-base.Dockerfile +++ b/roles/slurm/files/slurm-base.Dockerfile @@ -28,4 +28,8 @@ RUN mkdir /etc/docker-init.d && chmod 755 /usr/local/sbin/docker-init COPY start-scripts/10-munge /etc/docker-init.d/10-munge RUN chmod 755 /etc/docker-init.d/10-munge +ARG moreusers +RUN function mu { [ -z "$1" ] || useradd -d $2 -m --no-log-init --system $1 ;};\ + echo "${moreusers}" | tr ',' '\n' | while read i ; do mu $i ; done + CMD /usr/local/sbin/docker-init diff --git a/roles/slurm/tasks/dockerimage.yml b/roles/slurm/tasks/dockerimage.yml index 3f470ba..c4fb325 100644 --- a/roles/slurm/tasks/dockerimage.yml +++ b/roles/slurm/tasks/dockerimage.yml @@ -13,6 +13,11 @@ content: "{{ lookup('file', 'docker-init') }}" - dest: start-scripts/10-munge content: "{{ lookup('file', 'start-scripts/10-munge') }}" + image_args: + moreusers: >- + {% for a in slurm_user_accounts | default([]) -%} + {{a['name']}} {{a['dir']}}{{loop.last | ternary('',',')}} + {%- endfor %} register: slurm_baseimg_build when: not slurm_baseimg_build_chg | default(False) diff --git a/roles/slurm/tasks/dockerimage_build.yml b/roles/slurm/tasks/dockerimage_build.yml index 5eed2ec..106358e 100644 --- a/roles/slurm/tasks/dockerimage_build.yml +++ b/roles/slurm/tasks/dockerimage_build.yml @@ -33,6 +33,7 @@ tag: "{{image_name}}" # pull: False build: + args: "{{image_args | default(omit)}}" pull: False path: "/container/docker-images/{{slurm_image_prefix}}-{{image_name}}/" source: build