diff --git a/roles/slurm/tasks/main.yml b/roles/slurm/tasks/main.yml index c893c5c..f39f72a 100644 --- a/roles/slurm/tasks/main.yml +++ b/roles/slurm/tasks/main.yml @@ -8,19 +8,17 @@ loop: - name: slurmctld dockerfile: "{{ lookup('file', 'slurmctld.Dockerfile') }}" - start_scripts: - - name: 20-slurmctld + files: + - dest: start-scripts/20-slurmctld content: "{{ lookup('file', 'start-scripts/20-slurmctld') }}" - name: slurmd dockerfile: "{{ lookup('file', 'slurmd.Dockerfile') }}" - start_scripts: - - name: 30-slurmd + files: + - dest: start-scripts/30-slurmd content: "{{ lookup('file', 'start-scripts/30-slurmd') }}" loop_control: loop_var: image label: "{{ image.name }}" - vars: - build_base: True - name: generate munge key shell: diff --git a/roles/slurm_dockerimage/tasks/dockerimage.yml b/roles/slurm_dockerimage/tasks/dockerimage.yml index c63d458..311ed06 100644 --- a/roles/slurm_dockerimage/tasks/dockerimage.yml +++ b/roles/slurm_dockerimage/tasks/dockerimage.yml @@ -1,35 +1,29 @@ -- copy: +- name: create directories for docker image build + file: + path: "/container/docker-images/slurm-{{image.name}}/{{item}}" + state: directory + owner: "{{unpriv_user}}" + group: docker + loop: "{{ [''] + (image.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" + dest: "/container/docker-images/slurm-{{image.name}}/Dockerfile" owner: "{{unpriv_user}}" group: docker register: slurm_cp_dockerfile -# TODO: single source of truth: -# dockerfile -> parse for startup files or startup files template in dockerfile - -- name: copy startup scripts +- name: copy requisite files copy: - contents: "{{ item.content | default(lookup('file', item.name)) }}" - dest: "/container/docker-images/slurm/start-scripts/{{item.name}}" + content: "{{ item.content }}" + dest: "/container/docker-images/slurm-{{image.name}}/{{item.dest}}" owner: root group: root mode: u=rwx,g=rx,o=rx - loop: "{{ start_scripts | default([]) }}" - register: slurm_cp_stscrs - -- set_fact: - slurm_stscrs_changed: "{{ (slurm_stscrs_changed | default([])) + - (slurm_cp_stscrs.results | selectattr('changed') | - map(attribute='item.name') | list) }}" -- set_fact: - slurm_stscrs_relevant: "{{ slurm_stscrs_changed | - intersect(start_scripts | default([]) | map(attribute='name') | list) | - length > 0 }}" - -- debug: msg="{{slurm_cp_dockerfile.changed or - slurm_stscrs_relevant or - slurm_baseimg_build_chg }}" + loop: "{{ image.files | default([]) }}" + register: slurm_cp_files - docker_image: name: "slurm" @@ -37,11 +31,8 @@ # 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 + path: "/container/docker-images/slurm-{{image.name}}/" source: build force_source: "{{slurm_cp_dockerfile.changed or - slurm_stscrs_relevant or + slurm_cp_files.changed or slurm_baseimg_build_chg }}" - # TODO: force when base image changed! diff --git a/roles/slurm_dockerimage/tasks/main.yml b/roles/slurm_dockerimage/tasks/main.yml index 67d3f86..afc1f18 100644 --- a/roles/slurm_dockerimage/tasks/main.yml +++ b/roles/slurm_dockerimage/tasks/main.yml @@ -1,5 +1,5 @@ - file: - path: "/container/docker-images/slurm/start-scripts" + path: "/container/docker-images/slurm-base/start-scripts" state: directory owner: "{{unpriv_user}}" group: docker @@ -8,7 +8,7 @@ - name: copy slurm base image requisite files copy: # FIXME: swap out src: "{{item.file}}" - dest: "/container/docker-images/slurm/{{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') }}" @@ -28,7 +28,7 @@ # pull: False build: pull: False - path: "/container/docker-images/slurm/" + path: "/container/docker-images/slurm-base/" dockerfile: "slurm-base.Dockerfile" # target: "{{image.name}}" # unsupported on old docker-py version as in el7 source: build