build cobald image from slurm role, separated tags

This commit is contained in:
2021-06-22 16:48:56 +02:00
parent 78850d4636
commit 1f4dfe1821
8 changed files with 98 additions and 77 deletions

View File

@@ -0,0 +1,34 @@
- file:
path: "/container/docker-images/cobald.{{cobald_image_tag|default('latest')}}/"
state: directory
owner: "{{unpriv_user}}"
group: docker
- template:
src: cobald.Dockerfile
dest: "/container/docker-images/cobald.{{cobald_image_tag|default('latest')}}/Dockerfile"
owner: "{{unpriv_user}}"
group: docker
register: cobald_cp_dockerfile
- copy:
src: "{{item}}"
dest: "/container/docker-images/cobald.{{cobald_image_tag|default('latest')}}/{{item}}"
owner: "{{unpriv_user}}"
group: docker
mode: 0755
with_items:
- cobald-entrypoint.sh
- init-cobaldmodules.sh
register: cobald_cp_files
- docker_image:
name: "cobald"
tag: "{{cobald_image_tag|default('latest')}}"
# pull: False
build:
pull: False
path: "/container/docker-images/cobald.{{cobald_image_tag|default('latest')}}/"
source: build
force_source: "{{cobald_cp_dockerfile.changed or cobald_cp_files.changed}}"

View File

@@ -1,46 +1,29 @@
- include_vars: cobald-slurm.yml - include_vars: cobald-slurm.yml
when: cobald_slurm | default(False) when: cobald_slurm | default(False)
# FIXME: replace below by - include_role:
# - include_role: slurm name: slurm
# tasks_from: dockerimage tasks_from: dockerimage
- file: vars:
path: "/container/{{item.name}}/cobald{{item.pfx|default('')}}/" slurm_image_prefix: cobald
image_name: "{{cobald_image_tag}}"
dockerfile: "{{ lookup('template', 'cobald.Dockerfile') }}"
files:
- dest: cobald-entrypoint.sh
content: "{{ lookup('file', 'cobald-entrypoint.sh') }}"
- dest: init-cobaldmodules.sh
content: "{{ lookup('file', 'init-cobaldmodules.sh') }}"
when: cobald_slurm | default(False)
- include_tasks: dockerimage-generic.yml
when: not (cobald_slurm | default(False))
- name: make cobald data volume
file:
path: "/container/volumes/cobald/"
state: directory state: directory
owner: "{{unpriv_user}}" owner: "{{unpriv_user}}"
group: docker group: docker
loop:
- name: docker-images
pfx: ".{{cobald_image_tag|default('latest')}}"
- name: volumes
- template:
src: cobald.Dockerfile
dest: "/container/docker-images/cobald.{{cobald_image_tag|default('latest')}}/Dockerfile"
owner: "{{unpriv_user}}"
group: docker
register: cobald_cp_dockerfile
- copy:
src: "{{item}}"
dest: "/container/docker-images/cobald.{{cobald_image_tag|default('latest')}}/{{item}}"
owner: "{{unpriv_user}}"
group: docker
mode: 0755
with_items:
- cobald-entrypoint.sh
- init-cobaldmodules.sh
register: cobald_cp_files
- docker_image:
name: "cobald"
tag: "{{cobald_image_tag|default('latest')}}"
# pull: False
build:
pull: False
path: "/container/docker-images/cobald.{{cobald_image_tag|default('latest')}}/"
source: build
force_source: "{{cobald_cp_dockerfile.changed or cobald_cp_files.changed}}"
- copy: - copy:
src: cobald-config/ src: cobald-config/

View File

@@ -1,8 +1,9 @@
container_privileged: False
slurm_user: slurm slurm_user: slurm
slurm_log_path_ctld: /var/log/slurm/slurmctld.log slurm_log_path_ctld: /var/log/slurm/slurmctld.log
slurm_log_path_d: /var/log/slurm/slurmd.log slurm_log_path_d: /var/log/slurm/slurmd.log
slurm_log_path_sched: /var/log/slurm/slurmsched.log slurm_log_path_sched: /var/log/slurm/slurmsched.log
slurm_prefix: slurm slurm_prefix: slurm
slurm_domain: slurm.local slurm_domain: slurm.local
container_privileged: False
docker_network: slurm docker_network: slurm
slurm_image_prefix: slurm

View File

@@ -1,8 +1,9 @@
- name: build slurm base docker image - name: build slurm base docker image
include_tasks: dockerimage_build.yml include_tasks: dockerimage_build.yml
vars: vars:
slurm_image_prefix: "{{slurm_base_image_prefix | default('slurm') }}"
image_name: base image_name: base
dockerfile: slurm-base.Dockerfile dockerfile: "{{lookup('file', 'slurm-base.Dockerfile')}}"
files: files:
- dest: entrypoint.sh - dest: entrypoint.sh
content: "{{ lookup('file', 'entrypoint.sh') }}" content: "{{ lookup('file', 'entrypoint.sh') }}"
@@ -20,5 +21,5 @@
"{{(slurm_baseimg_build_chg | default(False)) or "{{(slurm_baseimg_build_chg | default(False)) or
slurm_baseimg_build.changed}}" slurm_baseimg_build.changed}}"
- name: "build slurm base docker image {{name}}" - name: "build slurm base docker image {{image_name}}"
include_tasks: dockerimage_build.yml include_tasks: dockerimage_build.yml

View File

@@ -1,16 +1,16 @@
- name: create directories for docker image build - name: create directories for docker image build
file: file:
path: "/container/docker-images/slurm-{{image_name}}/{{item}}" path: "/container/docker-images/{{slurm_image_prefix}}-{{image_name}}/{{item}}"
state: directory state: directory
owner: "{{unpriv_user}}" owner: "{{unpriv_user}}"
group: docker group: docker
loop: "{{ [''] + (files | map(attribute='dest') | map('dirname') | loop: "{{ [''] + (files | map(attribute='dest') | map('dirname') |
unique | select | list) }}" unique | select | list) }}"
- name: copy Dockerfile - name: "copy Dockerfile {{slurm_image_prefix}}:{{image_name}}"
copy: copy:
src: "{{image_name}}.Dockerfile" content: "{{dockerfile}}"
dest: "/container/docker-images/slurm-{{image_name}}/Dockerfile" dest: "/container/docker-images/{{slurm_image_prefix}}-{{image_name}}/Dockerfile"
owner: "{{unpriv_user}}" owner: "{{unpriv_user}}"
group: docker group: docker
register: slurm_cp_dockerfile register: slurm_cp_dockerfile
@@ -18,7 +18,7 @@
- name: copy requisite files - name: copy requisite files
copy: copy:
content: "{{ item.content }}" content: "{{ item.content }}"
dest: "/container/docker-images/slurm-{{image_name}}/{{item.dest}}" dest: "/container/docker-images/{{slurm_image_prefix}}-{{image_name}}/{{item.dest}}"
owner: root owner: root
group: root group: root
mode: u=rwx,g=rx,o=rx mode: u=rwx,g=rx,o=rx
@@ -27,13 +27,14 @@
label: "{{ item.dest }}" label: "{{ item.dest }}"
register: slurm_cp_files register: slurm_cp_files
- docker_image: - name: "build docker image {{slurm_image_prefix}}:{{image_name}}"
name: "slurm" docker_image:
name: "{{slurm_image_prefix}}"
tag: "{{image_name}}" tag: "{{image_name}}"
# pull: False # pull: False
build: build:
pull: False pull: False
path: "/container/docker-images/slurm-{{image_name}}/" path: "/container/docker-images/{{slurm_image_prefix}}-{{image_name}}/"
source: build source: build
force_source: "{{slurm_cp_dockerfile.changed or force_source: "{{slurm_cp_dockerfile.changed or
slurm_cp_files.changed or slurm_cp_files.changed or

View File

@@ -3,7 +3,8 @@
name: [ slurm, slurm-doc ] name: [ slurm, slurm-doc ]
state: present state: present
- include_tasks: - name: build docker images for slurm
include_tasks:
file: dockerimage.yml file: dockerimage.yml
loop: loop:
- name: slurmctld - name: slurmctld
@@ -36,7 +37,8 @@
group: munge group: munge
mode: u=rw,g=,o= mode: u=rw,g=,o=
- file: - name: create munge key directory for containers
file:
path: /container/volumes/munge path: /container/volumes/munge
state: directory state: directory
owner: munge owner: munge
@@ -51,7 +53,8 @@
src: /etc/munge/munge.key src: /etc/munge/munge.key
dest: /container/volumes/munge/munge.key dest: /container/volumes/munge/munge.key
- file: - name: make slurm directory
file:
path: /container/volumes/slurm/ path: /container/volumes/slurm/
state: directory state: directory
@@ -78,29 +81,6 @@
name: slurm-shared name: slurm-shared
state: present state: present
- set_fact:
slurm_nodes_std: # default nodes: controller and submit machine
- machine: ctl
image: slurm:slurmctld
exposed_ports: [ "6817:6817/tcp" ]
- machine: submit1
image: slurm:slurmd
extra_mounts:
- "/home/{{unpriv_user}}/job3/:/mnt/:rw"
slurm_nodes_exec: | # extend range to execute nodes list
{% set slurm_nodes_exec = slurm_nodes_exec | default([]) %}
{% for i in range(1, num_nodes+1) -%}
{% set _ = slurm_nodes_exec.extend([
{'machine':'exec%s'|format(i), 'image': 'slurm:slurmd'}]) -%}
{%- endfor %}
{{ slurm_nodes_exec }}
slurm_default_mounts:
- /container/volumes/slurm/:/etc/slurm/:rw
- /container/volumes/munge/munge.key:/etc/munge/munge.key:rw
- slurm-shared:/shared/:rw
slurm_network: "{{docker_network}}"
tags: [ slurm-config ]
# TODO: reserve some address using docker_network_info and assign as aux # TODO: reserve some address using docker_network_info and assign as aux
# address to enable slurmctld to get a static address in order to be # address to enable slurmctld to get a static address in order to be
# reachable from slurm running on docker host to enable submitting jobs. # reachable from slurm running on docker host to enable submitting jobs.
@@ -113,7 +93,7 @@
volumes: "{{ slurm_default_mounts + ( item.extra_mounts | default([]) ) }}" volumes: "{{ slurm_default_mounts + ( item.extra_mounts | default([]) ) }}"
ports: "{{ item.exposed_ports | default([]) }}" ports: "{{ item.exposed_ports | default([]) }}"
networks: networks:
- name: "{{ slurm_network }}" - name: "{{ docker_network }}"
env: env:
slurmuser: "{{ slurm_user }}" slurmuser: "{{ slurm_user }}"
image: "{{ item.image }}" image: "{{ item.image }}"
@@ -123,14 +103,14 @@
privileged: "{{ container_privileged | bool }}" privileged: "{{ container_privileged | bool }}"
networks_cli_compatible: True networks_cli_compatible: True
interactive: True interactive: True
vars: vars: # see vars/main.yml
slurm_nodes_all: "{{ slurm_nodes_exec + slurm_nodes_std }}" slurm_nodes_all: "{{ slurm_nodes_exec + slurm_nodes_std }}"
loop: "{{ slurm_nodes_all }}" loop: "{{ slurm_nodes_all }}"
loop_control: loop_control:
label: "{{slurm_prefix}}-{{ item.machine }}" label: "{{slurm_prefix}}-{{ item.machine }}"
tags: [ slurm-config ] tags: [ slurm-config ]
- name: set facts to be used by other modules - name: export facts about slurm cluster to be used by other modules
set_fact: set_fact:
slurm: slurm:
user: "{{slurm_user}}" user: "{{slurm_user}}"
@@ -138,3 +118,4 @@
base_image: "slurm:base" base_image: "slurm:base"
mounts: "{{slurm_default_mounts}}" mounts: "{{slurm_default_mounts}}"
network: "{{docker_network}}" network: "{{docker_network}}"
tags: always

20
roles/slurm/vars/main.yml Normal file
View File

@@ -0,0 +1,20 @@
slurm_nodes_std: # default nodes: controller and submit machine
- machine: ctl
image: slurm:slurmctld
exposed_ports: [ "6817:6817/tcp" ]
- machine: submit1
image: slurm:slurmd
extra_mounts:
- "/home/{{unpriv_user}}/job3/:/mnt/:rw"
slurm_nodes_exec: | # extend range to execute nodes list
{% set slurm_nodes_exec = [] %}
{% for i in range(1, num_nodes+1) -%}
{% set _ = slurm_nodes_exec.extend([
{'machine':'exec%s'|format(i), 'image': 'slurm:slurmd'}]) -%}
{%- endfor %}
{{ slurm_nodes_exec }}
slurm_default_mounts:
- /container/volumes/slurm/:/etc/slurm/:rw
- /container/volumes/munge/munge.key:/etc/munge/munge.key:rw
- slurm-shared:/shared/:rw