---
# tasks file for SlurmDBD

- name: Create/Update Users
  template:
    dest: /etc/cron.d/slurm_users_groups
    src: ../../SlurmCtl/templates/etc/cron.d/slurm_users_groups
    owner: root
    group: root
    mode: 0600
    force: yes

- name: Get slurm database password
  register: password_results
  shell:
    cmd: |
      set -eo pipefail
      aws secretsmanager get-secret-value --secret-id {{SlurmDBSecretName}} --query 'SecretString' --output text | jq '.password'
- debug: var=password_results

- name: Set SlurmDBPassword
  set_fact:
    SlurmDBPassword: "{{password_results.stdout_lines[0]}}"

- name: Install epel from amazon-linux-extras
  when: ansible_facts['distribution'] == 'Amazon'
  shell:
    cmd: amazon-linux-extras install -y epel
    creates: /etc/yum.repos.d/epel.repo

- name: Install SlurmDBD packages
  yum:
    state: present
    disablerepo: "{{yum_disablerepo|default(omit)}}"
    name:
      - emacs
      - environment-modules
      - figlet
      - mailx
      - mariadb
      - munge
      - munge-libs
      - munge-devel

- name: Create slurm user
  user:
    name: slurm
    system: yes
    uid: '{{SlurmUid}}'
    create_home: no

- name: Wait for {{SlurmConfigDir}}/munge.key
  wait_for:
    path: "{{SlurmConfigDir}}/munge.key"
    timeout: 1800 # 30 minutes

- name: Copy {{SlurmConfigDir}}/munge.key to /etc/munge/munge.key
  copy:
    dest: /etc/munge/munge.key
    remote_src: true
    src: "{{SlurmConfigDir}}/munge.key"
    owner: munge
    group: munge
    mode: 0400

- name: Update /etc/systemd/system/munged.service
  template:
    src: ../../SlurmCtl/templates/etc/systemd/system/munged.service
    dest: /etc/systemd/system/munged.service
    owner: root
    group: root
    mode: 0644

- name: Start munged
  service:
    name: munged
    enabled: yes
    state: restarted

- name: Create /etc/slurm
  file:
    path: /etc/slurm
    state: directory
    owner: slurm
    group: slurm
    mode: 0700

- name: Create {{SlurmLogsDir}}
  file:
    path: "{{SlurmLogsDir}}"
    state: directory
    owner: slurm
    group: slurm
    mode: 0755

- name: Create {{SlurmLogsDir}}/{{SlurmDbdHostname}}
  file:
    path: "{{SlurmLogsDir}}/{{SlurmDbdHostname}}"
    state: directory
    owner: slurm
    group: slurm
    mode: 0755

- name: Create /var/log/slurm
  file:
    path: /var/log/slurm
    src: "{{SlurmLogsDir}}/{{SlurmDbdHostname}}"
    state: link
    owner: slurm
    group: slurm
    mode: 0755

- name: Create /etc/logrotate.d/slurmdbd
  template:
    dest: /etc/logrotate.d/slurmdbd
    src:   etc/logrotate.d/slurmdbd
    owner: root
    group: root
    mode: 0644

- name: Update /etc/slurm/slurmdbd.conf
  template:
    src:   etc/slurm/slurmdbd.conf
    dest: /etc/slurm/slurmdbd.conf
    owner: slurm
    group: slurm
    mode: 0600
  register: slurmdbd_conf

- name: Update /etc/sysconfig/slurmdbd
  template:
    src:   etc/sysconfig/slurmdbd
    dest: /etc/sysconfig/slurmdbd
    owner: slurm
    group: slurm
    mode: 0600
  register: sysconfig_slurmdbd

- name: Update /etc/systemd/system/slurmdbd.service
  template:
    dest: /etc/systemd/system/slurmdbd.service
    src:   etc/systemd/system/slurmdbd.service
    owner: root
    group: root
    mode: 0644
  register: slurmdbd_service

- name: Get service facts
  service_facts:

- name: Wait for {{SlurmSbinDir}}/slurmdbd
  wait_for:
    path: "{{SlurmSbinDir}}/slurmdbd"
    timeout: 1800 # 30 minutes

- name: Restart slurmdbd
  when: (ansible_facts.services['slurmdbd.service']['state'] == 'running') and (slurmdbd_conf.changed or slurmdbd_service.changed or sysconfig_slurmdbd)
  systemd:
    name: slurmdbd
    enabled: yes
    daemon_reload: yes
    state: restarted
  register: slurmdbd_restarted

- name: Start slurmdbd
  service:
    name: slurmdbd
    enabled: yes
    state: started

- name: Configure modules
  template:
    dest: /etc/profile.d/slurm_{{ClusterName}}_modulefiles.sh
    src:  ../../SlurmCtl/templates/etc/profile.d/slurm_modulefiles.sh
    owner: root
    group: root
    mode: 0644
    force: yes