diff --git a/roles/slurm-common/tasks/installMungeFromSource.yml b/roles/slurm-common/tasks/installMungeFromSource.yml index 438497c1fe1e5b784f0448c21cb5a6c936e4012a..aec3033b3534d3a3ddc43648a946df134b309ea8 100644 --- a/roles/slurm-common/tasks/installMungeFromSource.yml +++ b/roles/slurm-common/tasks/installMungeFromSource.yml @@ -26,3 +26,15 @@ - name: copy init script template: dest=/etc/init.d/munge src=munge.initd.j2 mode=755 sudo: true + +- name: copy slurm init script if OS contains systemd + template: dest=/etc/systemd/system/munge.service src=munge.service.j2 mode=755 + sudo: true + when: (ansible_distribution == "CentOS" or ansible_distribution == "RedHat") and + ( ansible_distribution_major_version == "7") + +- name: reload systemd + shell: systemctl daemon-reload + sudo: true + when: (ansible_distribution == "CentOS" or ansible_distribution == "RedHat") and + ( ansible_distribution_major_version == "7") diff --git a/roles/slurm-common/tasks/installSlurmFromSource.yml b/roles/slurm-common/tasks/installSlurmFromSource.yml index a172b990bfd8ea1f694d1c6fbd309b443eca09ec..95d5fc9234239d36f5d4330668cda5c0ff512428 100644 --- a/roles/slurm-common/tasks/installSlurmFromSource.yml +++ b/roles/slurm-common/tasks/installSlurmFromSource.yml @@ -32,8 +32,3 @@ args: chdir: /tmp/slurm-{{ slurm_version }} creates: "{{ slurm_dir }}/bin/srun" - -- name: copy init script - template: dest=/etc/init.d/slurm src=slurm.initd.j2 mode=755 - sudo: true - diff --git a/roles/slurm-common/tasks/main.yml b/roles/slurm-common/tasks/main.yml index a7c5e16e71fc1a7249b0aac54d11a196ba180a8d..a75f57a6063b5086ad4142ee4dda0840039164b7 100644 --- a/roles/slurm-common/tasks/main.yml +++ b/roles/slurm-common/tasks/main.yml @@ -99,15 +99,11 @@ - name: install munge key template: src=munge_key.j2 dest={{ munge_dir }}/etc/munge/munge.key owner=munge mode=600 sudo: true - notify: restart munge - name: enable munge on boot service: name=munge enabled=yes sudo: true -- name: start munge - service: name=munge state=started - sudo: true - include: installSlurmFromSource.yml @@ -130,7 +126,6 @@ - name: install slurm.conf copy: src=files/slurm.conf dest={{ slurm_dir }}/etc/slurm.conf sudo: true - notify: restart slurm when: slurm_use_vpn==False - name: install slurm.conf diff --git a/roles/slurm-common/templates/munge.service.j2 b/roles/slurm-common/templates/munge.service.j2 new file mode 100644 index 0000000000000000000000000000000000000000..2e73014c8c6075e71193b46abde387cac3bee4c2 --- /dev/null +++ b/roles/slurm-common/templates/munge.service.j2 @@ -0,0 +1,17 @@ +[Unit] +Description=MUNGE authentication service +Documentation=man:munged(8) +After=network.target +After=syslog.target +After=time-sync.target + +[Service] +Type=forking +ExecStart={{ munge_dir }}/sbin/munged +PIDFile={{ munge_dir }}/var/run/munge/munged.pid +User=munge +Group=munge +Restart=on-abort + +[Install] +WantedBy=multi-user.target diff --git a/roles/slurm-start/tasks/main.yml b/roles/slurm-start/tasks/main.yml index 29f3bc2e623188acbb4fdb843076bd7a675c2c97..4e642e84595009794cf6eb2837c371862fae8ca1 100644 --- a/roles/slurm-start/tasks/main.yml +++ b/roles/slurm-start/tasks/main.yml @@ -1,13 +1,60 @@ --- +- name: set use_systemd + set_fact: + use_systemd: True + when: (ansible_distribution == "CentOS" or ansible_distribution == "RedHat") and + ( ansible_distribution_major_version == "7") + +- name: install slurmdbd init + template: src=slurmdbd.initd.j2 dest=/etc/init.d/slurmdbd mode=755 + sudo: true + when: use_systemd is not defined and start_slurmdbd is defined + +- name: copy slurmdbd init script if OS contains systemd + template: dest=/etc/systemd/system/slurmdbd.service src=slurmdbd.service.j2 mode=755 + sudo: true + when: use_systemd is defined and start_slurmdbd is defined + +- name: copy slurm init script + template: dest=/etc/init.d/slurm src=slurm.initd.j2 mode=755 + sudo: true + when: use_systemd is not defined + +- name: copy slurmd.service + template: dest=/etc/systemd/system/slurmd.service src=slurmd.service.j2 mode=755 + sudo: true + when: use_systemd is defined and start_slurmd is defined + +- name: slurmctld.service + template: dest=/etc/systemd/system/slurmctld.service src=slurmctld.service.j2 mode=755 + sudo: true + when: use_systemd is defined and start_slurmctld is defined + +- name: reload systemd + shell: systemctl daemon-reload + sudo: true + when: use_systemd is defined + - name: start munge service: name=munge state=started sudo: true - name: start slurmdbd - service: name=slurmdbd state=started + service: name=slurmdbd state=started enabled=yes + sudo: true + when: start_slurmdbd is defined + +- name: start slurmctl + service: name=slurmctld state=started enabled=yes + sudo: true + when: use_systemd is defined and start_slurmctld is defined + +- name: start slurmd + service: name=slurmd state=started enabled=yes sudo: true - ignore_errors: true + when: use_systemd is defined and start_slurmd is defined - name: start slurm - service: name=slurm state=started + service: name=slurm state=started enabled=yes sudo: true + when: use_systemd is not defined and ( start_slurmd is defined or start_slurmctld is defined ) diff --git a/roles/slurm-common/templates/slurm.initd.j2 b/roles/slurm-start/templates/slurm.initd.j2 similarity index 100% rename from roles/slurm-common/templates/slurm.initd.j2 rename to roles/slurm-start/templates/slurm.initd.j2 diff --git a/roles/slurm-start/templates/slurmctld.service.j2 b/roles/slurm-start/templates/slurmctld.service.j2 new file mode 100644 index 0000000000000000000000000000000000000000..226bc4d15efac114fe80dd621e1592a87e7fd7d1 --- /dev/null +++ b/roles/slurm-start/templates/slurmctld.service.j2 @@ -0,0 +1,12 @@ +[Unit] +Description=Slurm controller daemon +After=network.target +ConditionPathExists={{ slurm_dir }}/etc/slurm.conf + +[Service] +Type=forking +#EnvironmentFile=/etc/default/slurmctld +ExecStart={{ slurm_dir }}/sbin/slurmctld $SLURMCTLD_OPTIONS +PIDFile={{ slurmpiddir }}/slurmctld.pid +[Install] +WantedBy=multi-user.target diff --git a/roles/slurm-start/templates/slurmd.service.j2 b/roles/slurm-start/templates/slurmd.service.j2 new file mode 100644 index 0000000000000000000000000000000000000000..d2917367279aa0df6c6745c098a0473ee6553bce --- /dev/null +++ b/roles/slurm-start/templates/slurmd.service.j2 @@ -0,0 +1,13 @@ +[Unit] +Description=Slurm node daemon +After=network.target +ConditionPathExists={{ slurm_dir }}/etc/slurm.conf + +[Service] +Type=forking +#EnvironmentFile=/etc/default/slurmd +ExecStart={{ slurm_dir }}/sbin/slurmd $SLURMD_OPTIONS +PIDFile={{ slurmpiddir }}/slurmd.pid + +[Install] +WantedBy=multi-user.target diff --git a/roles/slurmdb-config/templates/slurmdbd.initd.j2 b/roles/slurm-start/templates/slurmdbd.initd.j2 similarity index 100% rename from roles/slurmdb-config/templates/slurmdbd.initd.j2 rename to roles/slurm-start/templates/slurmdbd.initd.j2 diff --git a/roles/slurm-start/templates/slurmdbd.service.j2 b/roles/slurm-start/templates/slurmdbd.service.j2 new file mode 100644 index 0000000000000000000000000000000000000000..d27b275040b183d75c9deb0a8e94766c7a1e09c5 --- /dev/null +++ b/roles/slurm-start/templates/slurmdbd.service.j2 @@ -0,0 +1,13 @@ + +[Unit] +Description=Slurm DBD accounting daemon +After=network.target +ConditionPathExists={{ slurm_dir }}/etc/slurmdbd.conf + +[Service] +Type=forking +ExecStart={{ slurm_dir }}/sbin/slurmdbd +PIDFile=/var/run/slurmdbd.pid + +[Install] +WantedBy=multi-user.target diff --git a/roles/slurmdb-config/tasks/main.yml b/roles/slurmdb-config/tasks/main.yml index 71c0b92869fe3e1564a803cfe52493c00f053bb2..aa3323f100099f3037206ab18e3f6afefbb35418 100644 --- a/roles/slurmdb-config/tasks/main.yml +++ b/roles/slurmdb-config/tasks/main.yml @@ -17,11 +17,11 @@ - python-mysqldb when: ansible_os_family == "Debian" -- name: install slurmdbd init - template: src=slurmdbd.initd.j2 dest=/etc/init.d/slurmdbd mode=755 +- name: make sure config dir exists + file: path="{{ slurm_dir }}/etc" state=directory sudo: true -- name: install slurmdb.conf init +- name: install slurmdb.conf template: src=slurmdbd.conf.j2 dest={{ slurm_dir }}/etc/slurmdbd.conf sudo: true when: slurm_dir is defined