From 5ef8e7964f6a740a72b591dd745d65ce1ee23d8b Mon Sep 17 00:00:00 2001 From: Christian IUGA Date: Mon, 8 Mar 2021 12:51:38 +0100 Subject: [PATCH 1/6] Fix #6 - on tasks `Install slurmdbd.conf` , fix AnsibleUndefinedVariable: 'item' is undefined" - Create directory path of PIDfile - Modify the systemd service with PIDfile - Add Handler to reload systemd Still a bug exist on a refresh install `Ensure slurmdbd is enabled and running` will failed as it's running before systemd daemon-reload --- handlers/main.yml | 3 +++ tasks/slurmdbd.yml | 21 ++++++++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/handlers/main.yml b/handlers/main.yml index 2af4d81..2332e4a 100644 --- a/handlers/main.yml +++ b/handlers/main.yml @@ -1,4 +1,7 @@ --- +- name: systemd reload + systemd: + daemon_reload: yes - name: reload slurmd service: diff --git a/tasks/slurmdbd.yml b/tasks/slurmdbd.yml index ca4fd2f..adcd157 100644 --- a/tasks/slurmdbd.yml +++ b/tasks/slurmdbd.yml @@ -8,10 +8,13 @@ - name: Install slurmdbd.conf template: src: generic.conf.j2 - dest: "{{ slurm_config_dir }}/slurmdbd.conf" + dest: "{{ slurm_config_dir }}/{{ item.name }}" owner: "{{ __slurm_user_name }}" group: root mode: 0400 + with_items: + - name: slurmdbd.conf + config: __slurmdbd_config_merged notify: - reload slurmdbd @@ -23,3 +26,19 @@ mode: 0755 state: directory when: slurm_create_dirs and __slurmdbd_config_merged.LogFile + +- name: Directory of Pidfile must exist + file: + state: directory + path: "{{ __slurmdbd_config_merged.PidFile | dirname }}" + when: __slurmdbd_config_merged.PidFile is defined + +- name: Service slurmdbd , option PIDFile + lineinfile: + path: /lib/systemd/system/slurmdbd.service + regexp: 'PIDFile' + line: "PIDFile={{ __slurmdbd_config_merged.PidFile }}" + when: __slurmdbd_config_merged.PidFile is defined + notify: + - systemd reload + - reload slurmdbd From b6e63394f83983d8bdc66cd4552b281e4e1ef910 Mon Sep 17 00:00:00 2001 From: Christian IUGA Date: Mon, 8 Mar 2021 12:52:00 +0100 Subject: [PATCH 2/6] Debian Buster is now supported and working --- meta/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/meta/main.yml b/meta/main.yml index 7d84a25..cd6effd 100644 --- a/meta/main.yml +++ b/meta/main.yml @@ -45,6 +45,7 @@ galaxy_info: versions: - jessie - stretch + - buster - name: Ubuntu versions: - xenial From 7fda2b3391b0afeb2f617c402413656e194e3111 Mon Sep 17 00:00:00 2001 From: Christian IUGA Date: Thu, 11 Mar 2021 10:29:58 +0100 Subject: [PATCH 3/6] slurm user should have write permission to PID folder --- tasks/slurmdbd.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/tasks/slurmdbd.yml b/tasks/slurmdbd.yml index adcd157..b77fd7d 100644 --- a/tasks/slurmdbd.yml +++ b/tasks/slurmdbd.yml @@ -31,6 +31,7 @@ file: state: directory path: "{{ __slurmdbd_config_merged.PidFile | dirname }}" + owner: "{{ __slurmdbd_config_merged.SlurmUser | default(omit) }}" when: __slurmdbd_config_merged.PidFile is defined - name: Service slurmdbd , option PIDFile From f6ea4b706ee325dc42f8b0357d672e8c4bc185a0 Mon Sep 17 00:00:00 2001 From: Christian IUGA Date: Thu, 11 Mar 2021 10:30:46 +0100 Subject: [PATCH 4/6] make slurmd work's in Debian via same kind of modification as in slurmdbd.yml --- tasks/slurmd.yml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/tasks/slurmd.yml b/tasks/slurmd.yml index d9e77d8..c106ac2 100644 --- a/tasks/slurmd.yml +++ b/tasks/slurmd.yml @@ -38,3 +38,20 @@ - name: cgroup.conf config: slurm_cgroup_config when: item.config in vars + +- name: Directory of Pidfile must exist + file: + state: directory + path: "{{ __slurm_config_merged.SlurmdPidFile | dirname }}" + owner: "{{ __slurm_config_merged.SlurmUser | default(omit) }}" + when: __slurm_config_merged.SlurmdPidFile is defined + +- name: Service slurmctld , option PIDFile + lineinfile: + path: /lib/systemd/system/slurmd.service + regexp: 'PIDFile' + line: "PIDFile={{ __slurm_config_merged.SlurmdPidFile }}" + when: __slurm_config_merged.SlurmdPidFile is defined + notify: + - systemd reload + - reload slurmdbd From b1ce2c327437dfe1cd100095ac4afce289b66408 Mon Sep 17 00:00:00 2001 From: Christian IUGA Date: Thu, 11 Mar 2021 10:31:57 +0100 Subject: [PATCH 5/6] make slurmctld works in debian via same kind of modification as in `slurmdbd.yml` --- tasks/slurmctld.yml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/tasks/slurmctld.yml b/tasks/slurmctld.yml index 62fec10..63bf0d0 100644 --- a/tasks/slurmctld.yml +++ b/tasks/slurmctld.yml @@ -24,3 +24,20 @@ mode: 0755 state: directory when: slurm_create_dirs and __slurm_config_merged.SlurmctldLogFile != omit + +- name: Directory of Pidfile must exist + file: + state: directory + path: "{{ __slurm_config_merged.SlurmctldPidFile | dirname }}" + owner: "{{ __slurm_config_merged.SlurmUser | default(omit) }}" + when: __slurm_config_merged.SlurmctldPidFile is defined + +- name: Service slurmctld , option PIDFile + lineinfile: + path: /lib/systemd/system/slurmctld.service + regexp: 'PIDFile' + line: "PIDFile={{ __slurm_config_merged.SlurmctldPidFile }}" + when: __slurm_config_merged.SlurmctldPidFile is defined + notify: + - systemd reload + - reload slurmdbd From 52be1a4a10e173f4571c1271c1def231132676e9 Mon Sep 17 00:00:00 2001 From: Christian IUGA Date: Thu, 11 Mar 2021 12:07:49 +0100 Subject: [PATCH 6/6] manage run directory creation/permission via systemd so it's will work after a reboot and also should be more robust --- tasks/slurmctld.yml | 24 ++++++++++++++++++------ tasks/slurmd.yml | 24 ++++++++++++++++++------ tasks/slurmdbd.yml | 24 ++++++++++++++++++------ 3 files changed, 54 insertions(+), 18 deletions(-) diff --git a/tasks/slurmctld.yml b/tasks/slurmctld.yml index 63bf0d0..ecbd133 100644 --- a/tasks/slurmctld.yml +++ b/tasks/slurmctld.yml @@ -25,18 +25,30 @@ state: directory when: slurm_create_dirs and __slurm_config_merged.SlurmctldLogFile != omit -- name: Directory of Pidfile must exist - file: - state: directory - path: "{{ __slurm_config_merged.SlurmctldPidFile | dirname }}" - owner: "{{ __slurm_config_merged.SlurmUser | default(omit) }}" - when: __slurm_config_merged.SlurmctldPidFile is defined +- name: 'Service slurmctld : Directory of Pidfile must exist and set slurm group permission' + lineinfile: + path: /lib/systemd/system/slurmctld.service + regexp: '{{ item.regexp }}' + line: "{{ item.line }}" + insertafter: '\[Service\]' + loop: + - line : 'RuntimeDirectory={{ __slurm_config_merged.SlurmctldPidFile.split("/")[-2] }}' + regexp : '^RuntimeDirectory' + - line : "Group={{ __slurm_group_name }}" + regexp : '^Group' + - line : 'RuntimeDirectoryMode=0770' + regexp : '^RuntimeDirectoryMode' + notify: + - systemd reload + - reload slurmdbd + when: ansible_distribution == 'Debian' - name: Service slurmctld , option PIDFile lineinfile: path: /lib/systemd/system/slurmctld.service regexp: 'PIDFile' line: "PIDFile={{ __slurm_config_merged.SlurmctldPidFile }}" + insertafter: '\[Service\]' when: __slurm_config_merged.SlurmctldPidFile is defined notify: - systemd reload diff --git a/tasks/slurmd.yml b/tasks/slurmd.yml index c106ac2..2eb4b79 100644 --- a/tasks/slurmd.yml +++ b/tasks/slurmd.yml @@ -39,18 +39,30 @@ config: slurm_cgroup_config when: item.config in vars -- name: Directory of Pidfile must exist - file: - state: directory - path: "{{ __slurm_config_merged.SlurmdPidFile | dirname }}" - owner: "{{ __slurm_config_merged.SlurmUser | default(omit) }}" - when: __slurm_config_merged.SlurmdPidFile is defined +- name: 'Service slurmd : Directory of Pidfile must exist and set slurm group permission' + lineinfile: + path: /lib/systemd/system/slurmd.service + regexp: '{{ item.regexp }}' + line: "{{ item.line }}" + insertafter: '\[Service\]' + loop: + - line : 'RuntimeDirectory={{ __slurm_config_merged.SlurmdPidFile.split("/")[-2] }}' + regexp : '^RuntimeDirectory' + - line : "Group={{ __slurm_group_name }}" + regexp : '^Group' + - line : 'RuntimeDirectoryMode=0770' + regexp : '^RuntimeDirectoryMode' + notify: + - systemd reload + - reload slurmdbd + when: ansible_distribution == 'Debian' - name: Service slurmctld , option PIDFile lineinfile: path: /lib/systemd/system/slurmd.service regexp: 'PIDFile' line: "PIDFile={{ __slurm_config_merged.SlurmdPidFile }}" + insertafter: '\[Service\]' when: __slurm_config_merged.SlurmdPidFile is defined notify: - systemd reload diff --git a/tasks/slurmdbd.yml b/tasks/slurmdbd.yml index b77fd7d..5a9e626 100644 --- a/tasks/slurmdbd.yml +++ b/tasks/slurmdbd.yml @@ -27,18 +27,30 @@ state: directory when: slurm_create_dirs and __slurmdbd_config_merged.LogFile -- name: Directory of Pidfile must exist - file: - state: directory - path: "{{ __slurmdbd_config_merged.PidFile | dirname }}" - owner: "{{ __slurmdbd_config_merged.SlurmUser | default(omit) }}" - when: __slurmdbd_config_merged.PidFile is defined +- name: 'Service slurmdbd : Directory of Pidfile must exist and set slurm group permission' + lineinfile: + path: /lib/systemd/system/slurmdbd.service + regexp: '{{ item.regexp }}' + line: "{{ item.line }}" + insertafter: '\[Service\]' + loop: + - line : 'RuntimeDirectory={{ __slurmdbd_config_merged.PidFile.split("/")[-2] }}' + regexp : '^RuntimeDirectory' + - line : "Group={{ __slurm_group_name }}" + regexp : '^Group' + - line : 'RuntimeDirectoryMode=0770' + regexp : '^RuntimeDirectoryMode' + notify: + - systemd reload + - reload slurmdbd + when: ansible_distribution == 'Debian' - name: Service slurmdbd , option PIDFile lineinfile: path: /lib/systemd/system/slurmdbd.service regexp: 'PIDFile' line: "PIDFile={{ __slurmdbd_config_merged.PidFile }}" + insertafter: '\[Service\]' when: __slurmdbd_config_merged.PidFile is defined notify: - systemd reload