From 1a952a4e7aa246c068679803e1563f0b020b9df0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorsten=20M=C3=BCller?= Date: Mon, 28 Jun 2021 17:51:45 +0200 Subject: [PATCH] option for docker host access to cluster --- roles/slurm/tasks/host-config.yml | 31 +++++++++++++++++++++++++++++ roles/slurm/tasks/main.yml | 15 ++++++++++---- roles/slurm/templates/slurm.conf.j2 | 1 + 3 files changed, 43 insertions(+), 4 deletions(-) create mode 100644 roles/slurm/tasks/host-config.yml diff --git a/roles/slurm/tasks/host-config.yml b/roles/slurm/tasks/host-config.yml new file mode 100644 index 0000000..7f8f192 --- /dev/null +++ b/roles/slurm/tasks/host-config.yml @@ -0,0 +1,31 @@ +- name: "get addresses from docker network" + docker_network_info: + name: "{{ docker_network }}" + register: slurm_network_data + +- name: link host slurm config + file: + path: "/etc/slurm/slurm.conf" + src: "/container/volumes/slurm/slurm.conf" + force: True + state: link + backup: True + +- name: create slurm user + user: + name: slurm + system: True + +- name: place entry of slurm-ctl in host /etc/hosts + lineinfile: + line: "{{slurm_network_data.network.Containers | dict2items + | json_query('[?value.Name==`slurm-ctl`].value.IPv4Address') | first + | ipaddr('address') }}\tslurm-ctl" + regexp: "^(\\S*)(\\s*)slurm-ctl$" + path: /etc/hosts + backup: True + +- name: start munge locally + service: + name: munge + state: started diff --git a/roles/slurm/tasks/main.yml b/roles/slurm/tasks/main.yml index bc830b9..d4f1a9d 100644 --- a/roles/slurm/tasks/main.yml +++ b/roles/slurm/tasks/main.yml @@ -58,6 +58,13 @@ path: /container/volumes/slurm/ state: directory +- name: "create docker network to make service discovery work" + docker_network: + name: "{{ docker_network }}" + state: present + register: slurm_network_data + tags: slurm-config + - name: upload slurm config template: force: true @@ -71,14 +78,14 @@ slurm_exec_node_mem: 5000 # RealMemory=5964 slurm_alloc_nodes_default: - name: "{{slurm_prefix+'-submit1'}}" + - name: "{{ inventory_hostname }}" + addr: "{{ slurm_network_data.network.IPAM.Config[0].Gateway }}" alloc_nodes: "{{ slurm_alloc_nodes_default + extra_nodes | default([])}}" notify: reconfigure slurm tags: slurm-config -- name: "create docker network to make service discovery work" - docker_network: - name: "{{ docker_network }}" - state: present +- import_tasks: host-config.yml + when: slurm_hostsystem_cluster_access | default(False) - name: "create docker volume for shared access between nodes" docker_volume: diff --git a/roles/slurm/templates/slurm.conf.j2 b/roles/slurm/templates/slurm.conf.j2 index a4cb8ed..990f0fe 100644 --- a/roles/slurm/templates/slurm.conf.j2 +++ b/roles/slurm/templates/slurm.conf.j2 @@ -170,6 +170,7 @@ NodeName=slurm-exec[1-{{ num_nodes }}] CPUs={{ slurm_exec_node_cores }} {{'' {% for i in alloc_nodes -%} NodeName={{i.name}} {%- if i.hostname is defined %} NodeHostname={{i.hostname}} {% endif %} + {%- if i.addr is defined %} NodeAddr={{i.addr}} {% endif %} State=UNKNOWN {% endfor %} PartitionName=debug Nodes=slurm-exec[1-{{num_nodes}}] {{ ''