diff --git a/roles/cobald/tasks/main.yml b/roles/cobald/tasks/main.yml index a3d4ee1..84b4f4b 100644 --- a/roles/cobald/tasks/main.yml +++ b/roles/cobald/tasks/main.yml @@ -1,6 +1,9 @@ - include_vars: cobald-slurm.yml when: cobald_slurm | default(False) +# FIXME: replace below by +# - include_role: slurm +# tasks_from: dockerimage - file: path: "/container/{{item.name}}/cobald{{item.pfx|default('')}}/" state: directory diff --git a/roles/slurm_dockerimage/files/slurm-base.Dockerfile b/roles/slurm/files/base.Dockerfile similarity index 100% rename from roles/slurm_dockerimage/files/slurm-base.Dockerfile rename to roles/slurm/files/base.Dockerfile diff --git a/roles/slurm_dockerimage/files/entry-munge.sh b/roles/slurm/files/entry-munge.sh similarity index 100% rename from roles/slurm_dockerimage/files/entry-munge.sh rename to roles/slurm/files/entry-munge.sh diff --git a/roles/slurm_dockerimage/files/entrypoint.sh b/roles/slurm/files/entrypoint.sh similarity index 100% rename from roles/slurm_dockerimage/files/entrypoint.sh rename to roles/slurm/files/entrypoint.sh diff --git a/roles/slurm_dockerimage/files/start-scripts/10-munge b/roles/slurm/files/start-scripts/10-munge similarity index 100% rename from roles/slurm_dockerimage/files/start-scripts/10-munge rename to roles/slurm/files/start-scripts/10-munge diff --git a/roles/slurm/tasks/dockerimage.yml b/roles/slurm/tasks/dockerimage.yml index 4dd92f2..e4d296d 100644 --- a/roles/slurm/tasks/dockerimage.yml +++ b/roles/slurm/tasks/dockerimage.yml @@ -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 diff --git a/roles/slurm_dockerimage/tasks/dockerimage.yml b/roles/slurm/tasks/dockerimage_build.yml similarity index 59% rename from roles/slurm_dockerimage/tasks/dockerimage.yml rename to roles/slurm/tasks/dockerimage_build.yml index 29f977b..a3ec6f5 100644 --- a/roles/slurm_dockerimage/tasks/dockerimage.yml +++ b/roles/slurm/tasks/dockerimage_build.yml @@ -1,16 +1,16 @@ - name: create directories for docker image build file: - path: "/container/docker-images/slurm-{{image.name}}/{{item}}" + path: "/container/docker-images/slurm-{{image_name}}/{{item}}" state: directory owner: "{{unpriv_user}}" group: docker - loop: "{{ [''] + (image.files | map(attribute='dest') | map('dirname') | + 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" + src: "{{image_name}}.Dockerfile" + dest: "/container/docker-images/slurm-{{image_name}}/Dockerfile" owner: "{{unpriv_user}}" group: docker register: slurm_cp_dockerfile @@ -18,23 +18,23 @@ - name: copy requisite files copy: content: "{{ item.content }}" - dest: "/container/docker-images/slurm-{{image.name}}/{{item.dest}}" + dest: "/container/docker-images/slurm-{{image_name}}/{{item.dest}}" owner: root group: root mode: u=rwx,g=rx,o=rx - loop: "{{ image.files | default([]) }}" + loop: "{{ files | default([]) }}" loop_control: label: "{{ item.dest }}" register: slurm_cp_files - docker_image: name: "slurm" - tag: "{{image.name}}" + tag: "{{image_name}}" # pull: False build: pull: False - path: "/container/docker-images/slurm-{{image.name}}/" + 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 }}" + slurm_baseimg_build_chg | default(False) }}" diff --git a/roles/slurm/tasks/main.yml b/roles/slurm/tasks/main.yml index 1beeff6..7fe8f70 100644 --- a/roles/slurm/tasks/main.yml +++ b/roles/slurm/tasks/main.yml @@ -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 }}" diff --git a/roles/slurm_dockerimage/tasks/main.yml b/roles/slurm_dockerimage/tasks/main.yml deleted file mode 100644 index 912f0eb..0000000 --- a/roles/slurm_dockerimage/tasks/main.yml +++ /dev/null @@ -1,46 +0,0 @@ -- file: - path: "/container/docker-images/slurm-base/start-scripts" - state: directory - owner: "{{unpriv_user}}" - group: docker - -# - name: copy Dockerfile, entrypoint, docker-init and munge startup -- name: copy slurm base image requisite files - copy: # FIXME: swap out - src: "{{item.file}}" - dest: "/container/docker-images/slurm-base/{{item.file}}" - owner: "{{unpriv_user}}" - group: docker - mode: "{{ item.perms | default('u=rwx,g=rx,o=rx') }}" - loop: - - file: slurm-base.Dockerfile - perms: u=rw,g=r,o=r - - file: entrypoint.sh - - file: entry-munge.sh - - file: docker-init - - file: start-scripts/10-munge - when: not (slurm_baseimg_build_chg | default(False)) - register: slurm_baseimg_copy - -- name: build base image - docker_image: - name: "slurm" - tag: "base" -# pull: False - build: - pull: False - path: "/container/docker-images/slurm-base/" - dockerfile: "slurm-base.Dockerfile" -# target: "{{image.name}}" # unsupported on old docker-py version as in el7 - source: build - force_source: "{{slurm_baseimg_copy.changed}}" - # when: run only once but keep changed state - when: not (slurm_baseimg_build_chg | default(False)) - register: slurm_baseimg_build - -- set_fact: - slurm_baseimg_build_chg: - "{{(slurm_baseimg_build_chg | default(False)) or - slurm_baseimg_build.changed}}" - -- include_tasks: dockerimage.yml