merged slurm_dockerimage back into slurm role
This commit is contained in:
31
roles/slurm/files/base.Dockerfile
Normal file
31
roles/slurm/files/base.Dockerfile
Normal file
@@ -0,0 +1,31 @@
|
||||
FROM docker.io/library/centos:7
|
||||
|
||||
RUN yum install -y epel-release && \
|
||||
yum install -y slurm && \
|
||||
yum clean all && rm -rf /var/cache/yum
|
||||
|
||||
RUN yum install -y less iproute bind-utils nmap-ncat net-tools && \
|
||||
yum clean all && rm -rf /var/cache/yum
|
||||
|
||||
RUN mkdir -p /usr/local/lib/entrypoints.d/
|
||||
|
||||
COPY --chown=root:root entry-munge.sh /usr/local/lib/entrypoints.d/10-munge.sh
|
||||
COPY --chown=root:root entrypoint.sh /usr/local/sbin/entrypoint.sh
|
||||
|
||||
RUN chmod 755 /usr/local/lib/entrypoints.d/10-munge.sh && \
|
||||
chmod 755 /usr/local/sbin/entrypoint.sh
|
||||
|
||||
ENTRYPOINT [ "/usr/local/sbin/entrypoint.sh" ]
|
||||
|
||||
ARG slurmuser=slurm
|
||||
ENV slurmuser=${slurmuser}
|
||||
|
||||
RUN useradd -d /var/lib/slurm -m --no-log-init --system $slurmuser &&\
|
||||
slurm-setuser -u $slurmuser -g $slurmuser -y
|
||||
|
||||
COPY docker-init /usr/local/sbin/docker-init
|
||||
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
|
||||
|
||||
CMD /usr/local/sbin/docker-init
|
7
roles/slurm/files/entry-munge.sh
Normal file
7
roles/slurm/files/entry-munge.sh
Normal file
@@ -0,0 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
if [ -f "/etc/munge/munge.key" ] ; then
|
||||
chown munge:munge /etc/munge/munge.key
|
||||
chmod 600 /etc/munge/munge.key
|
||||
fi
|
8
roles/slurm/files/entrypoint.sh
Normal file
8
roles/slurm/files/entrypoint.sh
Normal file
@@ -0,0 +1,8 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
for i in /usr/local/lib/entrypoints.d/* ; do
|
||||
[ -f $i ] && /bin/sh $i || break
|
||||
done
|
||||
|
||||
exec "${@:-/bin/bash}"
|
2
roles/slurm/files/start-scripts/10-munge
Normal file
2
roles/slurm/files/start-scripts/10-munge
Normal file
@@ -0,0 +1,2 @@
|
||||
#!/bin/sh
|
||||
exec su -s /bin/sh -c "munged -F" munge
|
@@ -1,50 +1,24 @@
|
||||
- file:
|
||||
path: "/container/docker-images/slurm"
|
||||
state: directory
|
||||
owner: "{{unpriv_user}}"
|
||||
group: docker
|
||||
|
||||
- copy: # FIXME: template
|
||||
src: "{{image.name}}.Dockerfile"
|
||||
dest: "/container/docker-images/slurm/{{image.name}}.Dockerfile"
|
||||
owner: "{{unpriv_user}}"
|
||||
group: docker
|
||||
register: slurm_cp_dockerfile
|
||||
|
||||
- name: copy entrypoint and docker-init
|
||||
copy: # FIXME: swap out
|
||||
src: "{{item}}"
|
||||
dest: "/container/docker-images/slurm/{{item}}"
|
||||
owner: root
|
||||
group: root
|
||||
mode: u=rwx,g=rx,o=rx
|
||||
loop:
|
||||
- entrypoint.sh
|
||||
- docker-init
|
||||
register: slurm_cp_entrypt
|
||||
|
||||
- name: copy startup scripts
|
||||
copy:
|
||||
src: "start-scripts/"
|
||||
dest: "/container/docker-images/slurm/start-scripts/"
|
||||
owner: root
|
||||
group: root
|
||||
mode: u=rwx,g=rx,o=rx
|
||||
register: slurm_cp_stscrs
|
||||
- name: build slurm base docker image
|
||||
include_tasks: dockerimage_build.yml
|
||||
vars:
|
||||
image_name: base
|
||||
dockerfile: slurm-base.Dockerfile
|
||||
files:
|
||||
- dest: entrypoint.sh
|
||||
content: "{{ lookup('file', 'entrypoint.sh') }}"
|
||||
- dest: entry-munge.sh
|
||||
content: "{{ lookup('file', 'entry-munge.sh') }}"
|
||||
- dest: docker-init
|
||||
content: "{{ lookup('file', 'docker-init') }}"
|
||||
- dest: start-scripts/10-munge
|
||||
content: "{{ lookup('file', 'start-scripts/10-munge') }}"
|
||||
register: slurm_baseimg_build
|
||||
when: not slurm_baseimg_build_chg | default(False)
|
||||
|
||||
- set_fact:
|
||||
slurm_image_files_changed: "{{ (slurm_image_files_changed | default(False))
|
||||
or slurm_cp_entrypt.changed or slurm_cp_stscrs.changed }}"
|
||||
|
||||
- docker_image:
|
||||
name: "slurm"
|
||||
tag: "{{image.name}}"
|
||||
# pull: False
|
||||
build:
|
||||
pull: False
|
||||
path: "/container/docker-images/slurm/"
|
||||
dockerfile: "{{image.name}}.Dockerfile"
|
||||
# target: "{{image.name}}" # unsupported on old docker-py version as in el7
|
||||
source: build
|
||||
force_source: "{{slurm_cp_dockerfile.changed or slurm_image_files_changed}}"
|
||||
slurm_baseimg_build_chg:
|
||||
"{{(slurm_baseimg_build_chg | default(False)) or
|
||||
slurm_baseimg_build.changed}}"
|
||||
|
||||
- name: "build slurm base docker image {{name}}"
|
||||
include_tasks: dockerimage_build.yml
|
||||
|
40
roles/slurm/tasks/dockerimage_build.yml
Normal file
40
roles/slurm/tasks/dockerimage_build.yml
Normal file
@@ -0,0 +1,40 @@
|
||||
- name: create directories for docker image build
|
||||
file:
|
||||
path: "/container/docker-images/slurm-{{image_name}}/{{item}}"
|
||||
state: directory
|
||||
owner: "{{unpriv_user}}"
|
||||
group: docker
|
||||
loop: "{{ [''] + (files | map(attribute='dest') | map('dirname') |
|
||||
unique | select | list) }}"
|
||||
|
||||
- name: copy Dockerfile
|
||||
copy:
|
||||
src: "{{image_name}}.Dockerfile"
|
||||
dest: "/container/docker-images/slurm-{{image_name}}/Dockerfile"
|
||||
owner: "{{unpriv_user}}"
|
||||
group: docker
|
||||
register: slurm_cp_dockerfile
|
||||
|
||||
- name: copy requisite files
|
||||
copy:
|
||||
content: "{{ item.content }}"
|
||||
dest: "/container/docker-images/slurm-{{image_name}}/{{item.dest}}"
|
||||
owner: root
|
||||
group: root
|
||||
mode: u=rwx,g=rx,o=rx
|
||||
loop: "{{ files | default([]) }}"
|
||||
loop_control:
|
||||
label: "{{ item.dest }}"
|
||||
register: slurm_cp_files
|
||||
|
||||
- docker_image:
|
||||
name: "slurm"
|
||||
tag: "{{image_name}}"
|
||||
# pull: False
|
||||
build:
|
||||
pull: False
|
||||
path: "/container/docker-images/slurm-{{image_name}}/"
|
||||
source: build
|
||||
force_source: "{{slurm_cp_dockerfile.changed or
|
||||
slurm_cp_files.changed or
|
||||
slurm_baseimg_build_chg | default(False) }}"
|
@@ -3,9 +3,9 @@
|
||||
name: [ slurm, slurm-doc ]
|
||||
state: present
|
||||
|
||||
- include_role:
|
||||
name: slurm_dockerimage
|
||||
loop: # FIXME: default(omit)!
|
||||
- include_tasks:
|
||||
file: dockerimage.yml
|
||||
loop:
|
||||
- name: slurmctld
|
||||
dockerfile: "{{ lookup('file', 'slurmctld.Dockerfile') }}"
|
||||
files:
|
||||
@@ -16,6 +16,10 @@
|
||||
files:
|
||||
- dest: start-scripts/30-slurmd
|
||||
content: "{{ lookup('file', 'start-scripts/30-slurmd') }}"
|
||||
vars:
|
||||
image_name: "{{image.name | default(omit) }}"
|
||||
dockerfile: "{{image.dockerfile | default(omit) }}"
|
||||
files: "{{image.files | default(omit) }}"
|
||||
loop_control:
|
||||
loop_var: image
|
||||
label: "{{ image.name }}"
|
||||
|
Reference in New Issue
Block a user