- name: 'install slurm tools on host' yum: name: [ slurm, slurm-doc ] state: present - include_tasks: dockerimage.yml loop: - slurmctld - slurmd - name: generate munge key shell: cmd: dd if=/dev/urandom bs=1 count=1024 >/etc/munge/munge.key creates: /etc/munge/munge.key - name: set permissions on munge key file: path: /etc/munge/munge.key owner: munge group: munge mode: u=rw,g=,o= - file: path: /container/volumes/munge state: directory owner: munge group: munge mode: u=rwx,g=,o= - name: copy munge key to docker containers copy: remote_src: True force: true mode: preserve src: /etc/munge/munge.key dest: /container/volumes/munge/munge.key - file: path: /container/volumes/slurm/ state: directory - name: upload slurm config template: force: true src: "{{item}}.j2" dest: "/container/volumes/slurm/{{item}}" loop: - slurm.conf - cgroup.conf tags: [ slurm-config ] - name: "create docker network to make service discovery work" docker_network: name: slurm state: present # 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 # reachable from slurm running on docker host to enable submitting jobs. - name: run slurm docker containers docker_container: name: "slurm-{{item.machine}}" hostname: "slurm-{{item.machine}}" domainname: "slurm.local" volumes: "{{default_mounts + ( item.extra_mounts | default([]) ) }}" networks: - name: "slurm" image: "{{item.image}}" state: started detach: True cleanup: True privileged: "{{ container_privileged | ternary(True,False) }}" networks_cli_compatible: True vars: default_mounts: - /container/volumes/slurm/:/etc/slurm/:rw - /container/volumes/munge/munge.key:/etc/munge/munge.key:rw loop: - machine: ctl image: slurm-slurmctld - machine: exec1 image: slurm-slurmd - machine: exec2 image: slurm-slurmd - machine: submit1 image: slurm-slurmd extra_mounts: - "/home/thoto/job3/:/mnt/:rw" tags: [ slurm-config ]