From 61923ad934d7a4b13b2971d14cbe59d9503d8038 Mon Sep 17 00:00:00 2001 From: Chirs Ruihl Date: Tue, 17 Jun 2025 04:33:18 -0700 Subject: [PATCH 01/31] #8 Slurm Daemons exclude -D and --systemd in v24.05 --- slurm/defaults/main.yml | 24 ++++++++++++++++++------ slurm/tasks/main.yml | 11 +++++++++++ slurm/tasks/slurmd.yaml | 5 +++++ slurm/templates/slurmctld.service.j2 | 2 +- slurm/templates/slurmd.service.j2 | 2 +- 5 files changed, 36 insertions(+), 8 deletions(-) diff --git a/slurm/defaults/main.yml b/slurm/defaults/main.yml index 27de651..b31c657 100644 --- a/slurm/defaults/main.yml +++ b/slurm/defaults/main.yml @@ -1,16 +1,26 @@ --- # defaults file for slurm-controller slurm_database_password: "default" -#slurm_version: "21.08.8-2" -slurm_version: "23.11.5-1" +# slurm_version: "21.08.8-2" +# slurm_version: "23.11.5-1" +# Latest 25.05.0-1 + +slurm_version: "25.05.0-1" + +# For Slurm < 24.05.8-0 the slurmd and slurmctld use "-D --systemd" +# For Slurm >= 24.05.8-0, slurmd and slurmctld use only "--systemd" +# https://github.com/SchedMD/slurm/blob/slurm-24.05/NEWS +slurm_dasd_d_ver: "24.05.8-0" +slurm_dash_d: "-D" + slurm_enable_systemd_daemon_flag: false slurm_jwt_version: "v1.12.0" -slurm_slurmd: false +slurm_slurmd: true slurm_controller: false slurm_uid: 450 slurm_gid: 450 -slurm_controller_hostname: localhost -slurm_controller_ip: 127.0.0.1 +slurm_controller_hostname: ajo-h1 +slurm_controller_ip: 192.168.30.132 slurm_controller_port: 6817 slurm_daemon_port: 6818 # this slurm user needs to be investigate? @@ -110,7 +120,7 @@ slurm_task_epilog_append: "" # Firewall rules slurm_firewalld_enabled: false -slurm_firewalld_subnet: "10.141.0.0/16" +slurm_firewalld_subnet: "192.168.30.0/24" slurm_firewalld_python_interpreter: "/usr/bin/python" # Gres information @@ -133,3 +143,5 @@ slurm_force_install: false slurm_conf_extra: {} slurmdbd_conf_extra: {} + +munge_key: "A very long and secure key that is used for authentication it is really long" \ No newline at end of file diff --git a/slurm/tasks/main.yml b/slurm/tasks/main.yml index 6ba0835..025332e 100644 --- a/slurm/tasks/main.yml +++ b/slurm/tasks/main.yml @@ -40,6 +40,17 @@ - slurm_install_slurmd - slurm_configure +- name: Check for version > 24.05.8-0 + # We'll use this to build the slurmd and slurmctld command line opts + ansible.builtin.set_fact: + slurm_dash_d: "" + when: + "slurm_version is version(slurm_dasd_d_ver, '>=')" + tags: + - slurm + - slurm_install_controller + - slurm_install_slurmd + - name: Include pre-install tasks ansible.builtin.include_tasks: "pre_install.yaml" tags: diff --git a/slurm/tasks/slurmd.yaml b/slurm/tasks/slurmd.yaml index c656b98..414e527 100644 --- a/slurm/tasks/slurmd.yaml +++ b/slurm/tasks/slurmd.yaml @@ -10,6 +10,11 @@ - slurm_install_slurmd - slurm_configure +# In case another instance of slurmd.service is runnig +- name: Restart systemceld + systemd: + daemon_reexec: yes + - name: Create slurm configuration directory ansible.builtin.file: path: /etc/slurm diff --git a/slurm/templates/slurmctld.service.j2 b/slurm/templates/slurmctld.service.j2 index 4c6a193..5237fef 100644 --- a/slurm/templates/slurmctld.service.j2 +++ b/slurm/templates/slurmctld.service.j2 @@ -12,7 +12,7 @@ User=slurm Group=slurm RuntimeDirectory=slurmctld RuntimeDirectoryMode=0755 -ExecStart={{slurm_install_symlink}}/sbin/slurmctld -D -s --systemd $SLURMCTLD_OPTIONS +ExecStart={{slurm_install_symlink}}/sbin/slurmctld {{ slurm_dash_d }} -s --systemd $SLURMCTLD_OPTIONS ExecReload=/bin/kill -HUP $MAINPID LimitNOFILE=65536 diff --git a/slurm/templates/slurmd.service.j2 b/slurm/templates/slurmd.service.j2 index c143cf4..82ddf72 100644 --- a/slurm/templates/slurmd.service.j2 +++ b/slurm/templates/slurmd.service.j2 @@ -10,7 +10,7 @@ EnvironmentFile=-/etc/sysconfig/slurmd EnvironmentFile=-/etc/default/slurmd RuntimeDirectory=slurm RuntimeDirectoryMode=0755 -ExecStart={{slurm_install_symlink}}/sbin/slurmd -D -s --conf-server {{slurm_controller_ip}}:{{slurm_controller_port}} --systemd $SLURMD_OPTIONS +ExecStart={{slurm_install_symlink}}/sbin/slurmd {{ slurm_dash_d }} -s --conf-server {{slurm_controller_ip}}:{{slurm_controller_port}} --systemd $SLURMD_OPTIONS ExecReload=/bin/kill -HUP $MAINPID KillMode=process LimitNOFILE=131072 From 321c5afef64bed856948949b5273f18429aed785 Mon Sep 17 00:00:00 2001 From: Chirs Ruihl Date: Tue, 17 Jun 2025 10:02:56 -0400 Subject: [PATCH 02/31] #8 use localhost for slurmctld name --- slurm/defaults/main.yml | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/slurm/defaults/main.yml b/slurm/defaults/main.yml index b31c657..aabf74a 100644 --- a/slurm/defaults/main.yml +++ b/slurm/defaults/main.yml @@ -15,12 +15,12 @@ slurm_dash_d: "-D" slurm_enable_systemd_daemon_flag: false slurm_jwt_version: "v1.12.0" -slurm_slurmd: true -slurm_controller: false +slurm_slurmd: false +slurm_controller: true slurm_uid: 450 slurm_gid: 450 -slurm_controller_hostname: ajo-h1 -slurm_controller_ip: 192.168.30.132 +slurm_controller_hostname: localhost +slurm_controller_ip: 127.0.0.1 slurm_controller_port: 6817 slurm_daemon_port: 6818 # this slurm user needs to be investigate? @@ -120,7 +120,7 @@ slurm_task_epilog_append: "" # Firewall rules slurm_firewalld_enabled: false -slurm_firewalld_subnet: "192.168.30.0/24" +slurm_firewalld_subnet: "192.168.114.0/24" slurm_firewalld_python_interpreter: "/usr/bin/python" # Gres information @@ -143,5 +143,3 @@ slurm_force_install: false slurm_conf_extra: {} slurmdbd_conf_extra: {} - -munge_key: "A very long and secure key that is used for authentication it is really long" \ No newline at end of file From 5406e4128438611cc5bac5cdd3f568ce24b0feee Mon Sep 17 00:00:00 2001 From: Chirs Ruihl Date: Fri, 27 Jun 2025 22:47:44 -0400 Subject: [PATCH 03/31] #11 #12 intermediate save, not complte --- slurm/defaults/main.yml | 4 ++ slurm/tasks/install_dev_reqs.yaml | 11 ++++++ slurm/tasks/install_reqs.yaml | 66 +++++++++++++++++++++++++++++++ slurm/tasks/rpmbuild_pmix.yaml | 20 ++++++++++ slurm/tasks/rpmbuild_slurm.yaml | 53 +++++++++++++++++++++++++ slurm/vars/RedHat-9.yaml | 34 +++++++++------- 6 files changed, 173 insertions(+), 15 deletions(-) create mode 100644 slurm/tasks/install_dev_reqs.yaml create mode 100644 slurm/tasks/install_reqs.yaml create mode 100644 slurm/tasks/rpmbuild_pmix.yaml create mode 100644 slurm/tasks/rpmbuild_slurm.yaml diff --git a/slurm/defaults/main.yml b/slurm/defaults/main.yml index aabf74a..b88f635 100644 --- a/slurm/defaults/main.yml +++ b/slurm/defaults/main.yml @@ -1,4 +1,8 @@ --- +# Build RPM Packages - when true, this will biuld RPM packages for slurm +# and optionally PMIX then exit the role and complete. +slurm_build_rpms: true + # defaults file for slurm-controller slurm_database_password: "default" # slurm_version: "21.08.8-2" diff --git a/slurm/tasks/install_dev_reqs.yaml b/slurm/tasks/install_dev_reqs.yaml new file mode 100644 index 0000000..12da95c --- /dev/null +++ b/slurm/tasks/install_dev_reqs.yaml @@ -0,0 +1,11 @@ +--- +- name: Install required development packages + ansible.builtin.dnf: + name: "{{item}}" + state: present + enablerepo: "{{ slurm_el_repos }}" + + loop: "{{slurm_required_devel_packages}}" + when: ansible_distribution_major_version | int >= 8 + tags: + - slurm_build_rpms \ No newline at end of file diff --git a/slurm/tasks/install_reqs.yaml b/slurm/tasks/install_reqs.yaml new file mode 100644 index 0000000..36e9113 --- /dev/null +++ b/slurm/tasks/install_reqs.yaml @@ -0,0 +1,66 @@ +--- +- name: Install required packages EL 8+ + ansible.builtin.dnf: + name: "{{item}}" + state: present + enablerepo: "{{ slurm_el_repos }}" + + loop: "{{slurm_required_packages}}" + when: ansible_distribution_major_version | int >= 8 + tags: + - slurm + - slurm_install_controller + - slurm_install_slurmd + +- name: Install required packages EL 7 + ansible.builtin.package: + name: "{{item}}" + state: present + loop: "{{slurm_required_packages}}" + when: ansible_distribution_major_version | int == 7 + tags: + - slurm + - slurm_install_controller + - slurm_install_slurmd + +- name: Install slurmdbd requirements el8+ + ansible.builtin.dnf: + name: "{{item}}" + enablerepo: "{{ slurm_el_repos }}" + loop: "{{slurm_dbd_required_packages}}" + when: slurm_controller and slurm_enable_restd and ansible_distribution_major_version | int >= 8 + tags: + - slurm + - slurm_install_controller + - slurm_install_slurmd + +- name: Install slurmdbd requirements + ansible.builtin.package: + name: "{{item}}" + when: slurm_controller + loop: "{{slurm_dbd_required_packages}}" + tags: + - slurm + - slurm_install_controller + - slurm_install_slurmd + +- name: Install slurm rest api requirements EL8+ + ansible.builtin.dnf: + name: "{{item}}" + enablerepo: "{{ slurm_el_repos }}" + loop: "{{slurm_restapi_required_packages}}" + when: slurm_enable_restd and ansible_distribution_major_version | int >= 8 + tags: + - slurm + - slurm_install_restapi + - slurm_install_restd + +- name: Install slurm rest api requirements EL7 + ansible.builtin.package: + name: "{{item}}" + loop: "{{slurm_restapi_required_packages}}" + when: slurm_enable_restd and ansible_facts['distribution_major_version'] == "7" + tags: + - slurm + - slurm_install_restapi + - slurm_install_restd diff --git a/slurm/tasks/rpmbuild_pmix.yaml b/slurm/tasks/rpmbuild_pmix.yaml new file mode 100644 index 0000000..6ba1e84 --- /dev/null +++ b/slurm/tasks/rpmbuild_pmix.yaml @@ -0,0 +1,20 @@ +--- +- name: Install required development packages + ansible.builtin.dnf: + name: "{{item}}" + state: present + enablerepo: "{{ slurm_el_repos }}" + + loop: "{{slurm_pmix_required_devel_packages}}" + when: ansible_distribution_major_version | int >= 8 + +- name: Download source bundle + ansible.builtin.get_url: + url: "https://github.com/openpmix/openpmix/releases/download/v{{ slurm_pmix_version }}/pmix-{{ slurm_pmix_version }}.tar.bz2" + dest: "{{ slurm_tmpdir }}/pmix-{{ slurm_pmix_version }}.tar.bz2" + + +- name: rpmbuild from source tabundle rball + command: "rpmbuild -D \"_prefix {{ slurm_install_directory }}\" -ta pmix-{{ slurm_pmix_version }}.tar.bz2" + args: + chdir: "{{slurm_tmpdir}}" diff --git a/slurm/tasks/rpmbuild_slurm.yaml b/slurm/tasks/rpmbuild_slurm.yaml new file mode 100644 index 0000000..611ff56 --- /dev/null +++ b/slurm/tasks/rpmbuild_slurm.yaml @@ -0,0 +1,53 @@ +--- +- name: Install required development packages + ansible.builtin.dnf: + name: "{{item}}" + state: present + enablerepo: "{{ slurm_el_repos }}" + + loop: "{{slurm_pmix_required_devel_packages}}" + when: ansible_distribution_major_version | int >= 8 + +- name: Download source bundle + ansible.builtin.get_url: + url: "https://download.schedmd.com/slurm/slurm-{{ slurm_version }}.tar.bz2" + dest: "{{ slurm_tmpdir }}/slurm-{{ slurm_version }}.tar.bz2" + become: true + +- name: Check if PMix rpm is installed + ansible.builtin.command: + cmd: "rpm -qa pmix --queryformat %{VERSION}" + register: pmix_rpm_check + ignore_errors: true + +- name: Debug PMix RPM Check + ansible.builtin.debug: + var: pmix_rpm_check + +- name: Check PMix version + ansible.builtin.set_fact: + installed_pmix_version: "{{ pmix_rpm_check.stdout | default('') }}" + when: pmix_rpm_check.rc == 0 + +- name: Check if PMix version is compatible + ansible.builtin.fail: + msg: "PMIx version {{ installed_pmix_version }} is not the target version {{ slurm_pmix_version }}" + when: pmix_rpm_check.rc == 0 and (installed_pmix_version != slurm_pmix_version) + +- name: Debug End Role + ansible.builtin.meta: end_play + +- name: Base rpmbuild command + ansible.builtin.set_fact: + rpmbuild_cmd: "rpmbuild -D '_prefix {{ slurm_install_directory }}'" + +- name: rpmbuild pmix option + ansible.builtin.set_fact: + #-D \"_with_pmix --with-pmix=${PMIX_DIR}\"" + rpmbuild_cmd: " -D '_with_pmix --with-pmix=${{ slurm_install_directory }}'" + +- name: rpmbuild from source tabundle rball + command: "{{ rpmbuild_cmd }} -ta slurm-{{ slurm_version }}.tar.bz2" + args: + chdir: "{{slurm_tmpdir}}" + become: true \ No newline at end of file diff --git a/slurm/vars/RedHat-9.yaml b/slurm/vars/RedHat-9.yaml index d946c05..d93f2ae 100644 --- a/slurm/vars/RedHat-9.yaml +++ b/slurm/vars/RedHat-9.yaml @@ -2,48 +2,52 @@ slurm_el_repos: crb slurm_required_packages: - - zlib-devel - zlib - bzip2 - - bzip2-devel - openssl - openssh-server - - git - - openssl-devel - pkgconfig - wget - python3 - epel-release - - "@Development tools" - - dbus-devel - kernel-headers - s-nail - lua + +slurm_required_devel_packages: + - zlib-devel + - bzip2-devel + - openssl-devel + - git + - epel-release + - "@Development tools" + - dbus-devel + - kernel-headers - lua-devel - pam-devel + - mariadb-devel + - jansson-devel + - libyaml-devel + - json-c-devel + - http-parser + - http-parser-devel slurm_dbd_required_packages: - mariadb-server - - mariadb-devel - python3-PyMySQL slurm_jwt_required_packages: - jansson - - jansson-devel - - + slurm_restapi_required_packages: - libyaml - - libyaml-devel - json-c - - json-c-devel - - http-parser - - http-parser-devel + slurm_firewalld_packages: - python3-firewall -slurm_pmix_required_packages: +slurm_pmix_required_devel_packages: - "@Development tools" - libevent-devel - hwloc-devel From f33c9c2025460494df5c89e75f6c144686937e75 Mon Sep 17 00:00:00 2001 From: Chirs Ruihl Date: Sat, 28 Jun 2025 19:13:06 -0400 Subject: [PATCH 04/31] #12 more progress on rpm build run path --- slurm/CHANGELOG.md | 0 slurm/defaults/main.yml | 7 +++++-- slurm/tasks/install.yaml | 2 ++ slurm/tasks/rpmbuild.yaml | 24 +++++++++++++++++++++++- slurm/tasks/rpmbuild_pmix.yaml | 5 +++++ slurm/tasks/rpmbuild_slurm.yaml | 6 ++++-- 6 files changed, 39 insertions(+), 5 deletions(-) create mode 100644 slurm/CHANGELOG.md diff --git a/slurm/CHANGELOG.md b/slurm/CHANGELOG.md new file mode 100644 index 0000000..e69de29 diff --git a/slurm/defaults/main.yml b/slurm/defaults/main.yml index 83dd2fa..1d84438 100644 --- a/slurm/defaults/main.yml +++ b/slurm/defaults/main.yml @@ -1,7 +1,10 @@ --- # Build RPM Packages - when true, this will biuld RPM packages for slurm # and optionally PMIX then exit the role and complete. -slurm_build_rpms: true +slurm_build_rpms: true +slurm_rpmbuild_user: slurmbuild +slurm_rpmbuild_user_home: "/home/{{ slurm_rpmbuild_user }}" + # defaults file for slurm-controller slurm_database_password: "default" @@ -97,7 +100,7 @@ slurm_rpm_repo: "" slurm_build_jobs: 4 slurm_enable_cgroup_conf: true -slurm_enable_restd: true +slurm_enable_restd: false slurm_restd_port: 8911 slurm_restd_host: "0.0.0.0" slurm_restd_user: "{{undef(hint='You must specify the slurm rest api user')}}" diff --git a/slurm/tasks/install.yaml b/slurm/tasks/install.yaml index 31645c2..06019cb 100644 --- a/slurm/tasks/install.yaml +++ b/slurm/tasks/install.yaml @@ -4,6 +4,8 @@ state: directory path: "{{ slurm_tmpdir }}" mode: "0777" + ownder: "{{ slurm_user }}" + group: "{{ slurm_user }}" when: install_slurm tags: - slurm diff --git a/slurm/tasks/rpmbuild.yaml b/slurm/tasks/rpmbuild.yaml index 55cb58c..c804938 100644 --- a/slurm/tasks/rpmbuild.yaml +++ b/slurm/tasks/rpmbuild.yaml @@ -1,7 +1,29 @@ --- +- name: Create temporary source dir + ansible.builtin.file: + state: directory + path: "{{ slurm_tmpdir }}" + mode: "0777" + owner: "{{ slurm_rpmbuild_user }}" + group: "{{ slurm_rpmbuild_user }}" + + +- name: Add slurmbuild user + ansible.builtin.user: + name: "{{ slurm_rpmbuild_user }}" + comment: "Slurm Build User" + shell: /bin/bash + create_home: true + home: "{{ slurm_rpmbuild_user_home }}" + state: present + +- name: Set Slurm RPM build variables + ansible.builtin.set_fact: + slurm_rpm_base_path: "{{slurm_rpmbuild_user_home}}/rpmbuild/RPMS/{{ ansible_architecture }}" + - name: Set PMix RPM path ansible.builtin.set_fact: - slurm_pmix_rpm_path: "/root/rpmbuild/RPMS/{{ ansible_architecture }}/pmix-{{ slurm_pmix_version }}-1.el{{ ansible_distribution_major_version }}.{{ ansible_architecture }}.rpm" + slurm_pmix_rpm_path: "{{ slurm_rpm_base_path }}/pmix-{{ slurm_pmix_version }}-1.el{{ ansible_distribution_major_version }}.{{ ansible_architecture }}.rpm" - name: Check if PMix rpm exists ansible.builtin.stat: diff --git a/slurm/tasks/rpmbuild_pmix.yaml b/slurm/tasks/rpmbuild_pmix.yaml index 06a5f25..a757380 100644 --- a/slurm/tasks/rpmbuild_pmix.yaml +++ b/slurm/tasks/rpmbuild_pmix.yaml @@ -12,11 +12,16 @@ ansible.builtin.get_url: url: "https://github.com/openpmix/openpmix/releases/download/v{{ slurm_pmix_version }}/pmix-{{ slurm_pmix_version }}.tar.bz2" dest: "{{ slurm_tmpdir }}/pmix-{{ slurm_pmix_version }}.tar.bz2" + owner: "{{ slurm_rpmbuild_user }}" + group: "{{ slurm_rpmbuild_user }}" + mode: '0644' - name: rpmbuild pmix from source tarball command: "rpmbuild -D \"_prefix {{ slurm_install_directory }}\" -ta pmix-{{ slurm_pmix_version }}.tar.bz2" args: chdir: "{{slurm_tmpdir}}" + become: true + become_user: "{{ slurm_rpmbuild_user }}" - name: Check RPM file ansible.builtin.stat: diff --git a/slurm/tasks/rpmbuild_slurm.yaml b/slurm/tasks/rpmbuild_slurm.yaml index 09cfc25..5c20f6c 100644 --- a/slurm/tasks/rpmbuild_slurm.yaml +++ b/slurm/tasks/rpmbuild_slurm.yaml @@ -12,7 +12,8 @@ ansible.builtin.get_url: url: "https://download.schedmd.com/slurm/slurm-{{ slurm_version }}.tar.bz2" dest: "{{ slurm_tmpdir }}/slurm-{{ slurm_version }}.tar.bz2" - become: true + become: true + become_user: "{{ slurm_rpmbuild_user }}" # If PMix is installed it need to be both # the correct version and installed in the expected path @@ -120,7 +121,8 @@ command: "{{ rpmbuild_cmd }} {{ rpmbuild_pmix_option }} {{ rpmbuild_restd_option }} -ta slurm-{{ slurm_version }}.tar.bz2" args: chdir: "{{slurm_tmpdir}}" - become: true + become: true + become_user: "{{ slurm_rpmbuild_user }}" - name: Debug end play meta: end_play From b7fc2f5055177699d3c1d6743bcb05973c9e8b5e Mon Sep 17 00:00:00 2001 From: Chirs Ruihl Date: Sun, 29 Jun 2025 00:14:36 -0400 Subject: [PATCH 05/31] #12 More progress on rpmbuild run path --- slurm/CHANGELOG.md | 30 ++++++++++++++++++++++++++++++ slurm/tasks/rpmbuild_slurm.yaml | 2 +- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/slurm/CHANGELOG.md b/slurm/CHANGELOG.md index e69de29..fa1326a 100644 --- a/slurm/CHANGELOG.md +++ b/slurm/CHANGELOG.md @@ -0,0 +1,30 @@ + + +https://github.com/dstdev/ansible-roles/tree/cwr_dev + +New vars in slurm/defaults/main.yaml + - slurm_build_rpms | bool + - slurm_rpmbuild_user | non-privleged user id + - slurm_rpmbuild_user_home | home path + rpmbuild base + - slurm_download_url | github or schedmd + +New run path when slurm_build_rpms is true + + slurm/tasks/main.yaml + slurm/tasks/rpmbuild.yaml + - creates new slurm build user + + slurm/tasks/install_dev_reqs.yaml + slurm/tasks/rpmbuild_pmix.yaml + - does rpm build - rpms in "{{ slurm_rpmbuild_user_home }}/rpmbuild" + + slurm/tasks/rpmbuild_slurm.yaml + - does rpm build - rpms in "{{ slurm_rpmbuild_user_home }}/rpmbuild" + + slurm/tasks/cleanup.yaml" + + end_play + + + + \ No newline at end of file diff --git a/slurm/tasks/rpmbuild_slurm.yaml b/slurm/tasks/rpmbuild_slurm.yaml index 5c20f6c..82ce5ed 100644 --- a/slurm/tasks/rpmbuild_slurm.yaml +++ b/slurm/tasks/rpmbuild_slurm.yaml @@ -33,7 +33,7 @@ - name: Fail if PMix RPM path does not exist ansible.builtin.fail: msg: "PMIx RPM path {{ slurm_pmix_rpm_path }} does not exist. Please ensure the RPM is available for installation." - when: slurm_enable_pmix and not slurm_pmix_rpm_path_stat.stat.exists + when: slurm_enable_pmix and slurm_pmix_installed and not slurm_pmix_rpm_path_stat.stat.exists # Yum Install PMix RPM - name: Install PMix RPM From 0e66982653bbecf4666afcf8e8ddb35a793cc3f9 Mon Sep 17 00:00:00 2001 From: Chirs Ruihl Date: Mon, 30 Jun 2025 23:12:05 -0400 Subject: [PATCH 06/31] #12 more progress --- slurm/tasks/install.yaml | 24 ----------------- slurm/tasks/main.yml | 40 ---------------------------- slurm/tasks/slurm_version_check.yaml | 39 +++++++++++++++++++++++++++ 3 files changed, 39 insertions(+), 64 deletions(-) create mode 100644 slurm/tasks/slurm_version_check.yaml diff --git a/slurm/tasks/install.yaml b/slurm/tasks/install.yaml index 06019cb..360b79f 100644 --- a/slurm/tasks/install.yaml +++ b/slurm/tasks/install.yaml @@ -47,30 +47,6 @@ - slurm_install_controller - slurm_install_slurmd - -- name: Configure slurm - command: "./configure --prefix=/{{slurm_install_directory}} --sysconfdir=/etc/slurm \ - --localstatedir=/var --runstatedir=/run {% if slurm_enable_restd %}--with-jwt={{slurm_install_directory}}{% endif %}\ - {% if slurm_enable_pmix %} --with-pmix={{slurm_install_directory}}{% endif %}" - args: - chdir: "{{slurm_tmpdir}}/slurm-slurm-{{slurm_download_version}}" - when: slurm_source_unpack is changed - register: slurm_configure - tags: - - slurm - - slurm_install_controller - - slurm_install_slurmd - -- name: Install slurm - shell: "make -j {{slurm_build_jobs}} && make install" - args: - chdir: "{{slurm_tmpdir}}/slurm-slurm-{{slurm_download_version}}" - when: slurm_configure is changed - tags: - - slurm - - slurm_install_controller - - slurm_install_slurmd - - name: Install pmi shell: "make -j {{slurm_build_jobs}} && make install" args: diff --git a/slurm/tasks/main.yml b/slurm/tasks/main.yml index 9457a0a..7ab33f3 100644 --- a/slurm/tasks/main.yml +++ b/slurm/tasks/main.yml @@ -20,46 +20,6 @@ # role exits early if slurm_build_rpms == true ################################################## -- name: Set slurm download version - ansible.builtin.set_fact: - slurm_download_version: "{{ slurm_version | replace('.', '-')}}" - tags: - - slurm - - slurm_install_controller - - slurm_install_slurmd - - slurm_configure - -- name: Get slurm download version length - ansible.builtin.set_fact: - slurm_download_version_length: "{{ slurm_download_version.split('-') | length }}" - tags: - - slurm - - slurm_install_controller - - slurm_install_slurmd - - slurm_configure - -- name: Update slurm download version - ansible.builtin.set_fact: - slurm_download_version: "{{ slurm_download_version }}-1" - when: "slurm_download_version_length | int < 4" - tags: - - slurm - - slurm_install_controller - - slurm_install_slurmd - - slurm_configure - -- name: Check for version > 24.05.8-0 - # We'll use this to build the slurmd and slurmctld command line opts - ansible.builtin.set_fact: - slurm_dash_d: "" - when: - "slurm_version is version(slurm_dasd_d_ver, '>=')" - tags: - - slurm - - slurm_install_controller - - slurm_install_slurmd - - - name: Include pre-install tasks ansible.builtin.include_tasks: "pre_install.yaml" tags: diff --git a/slurm/tasks/slurm_version_check.yaml b/slurm/tasks/slurm_version_check.yaml new file mode 100644 index 0000000..d60aa2f --- /dev/null +++ b/slurm/tasks/slurm_version_check.yaml @@ -0,0 +1,39 @@ +--- +- name: Set slurm download version + ansible.builtin.set_fact: + slurm_download_version: "{{ slurm_version | replace('.', '-')}}" + tags: + - slurm + - slurm_install_controller + - slurm_install_slurmd + - slurm_configure + +- name: Get slurm download version length + ansible.builtin.set_fact: + slurm_download_version_length: "{{ slurm_download_version.split('-') | length }}" + tags: + - slurm + - slurm_install_controller + - slurm_install_slurmd + - slurm_configure + +- name: Update slurm download version + ansible.builtin.set_fact: + slurm_download_version: "{{ slurm_download_version }}-1" + when: "slurm_download_version_length | int < 4" + tags: + - slurm + - slurm_install_controller + - slurm_install_slurmd + - slurm_configure + +- name: Check for version > 24.05.8-0 + # We'll use this to build the slurmd and slurmctld command line opts + ansible.builtin.set_fact: + slurm_dash_d: "" + when: + "slurm_version is version(slurm_dasd_d_ver, '>=')" + tags: + - slurm + - slurm_install_controller + - slurm_install_slurmd \ No newline at end of file From a37ae95d20a3fd6219b396f4a479d1da4c45dd7b Mon Sep 17 00:00:00 2001 From: Chirs Ruihl Date: Wed, 2 Jul 2025 10:01:46 -0400 Subject: [PATCH 07/31] #12 more progress --- slurm/defaults/main.yml | 13 +++++++------ slurm/tasks/main.yml | 6 ++---- slurm/tasks/rpm_install.yaml | 20 ++++---------------- slurm/tasks/rpmbuild.yaml | 10 ++++++++++ slurm/tasks/rpmbuild_slurm.yaml | 11 ++--------- 5 files changed, 25 insertions(+), 35 deletions(-) diff --git a/slurm/defaults/main.yml b/slurm/defaults/main.yml index 1d84438..e12856d 100644 --- a/slurm/defaults/main.yml +++ b/slurm/defaults/main.yml @@ -1,10 +1,11 @@ --- # Build RPM Packages - when true, this will biuld RPM packages for slurm # and optionally PMIX then exit the role and complete. -slurm_build_rpms: true +slurm_build_rpms: false slurm_rpmbuild_user: slurmbuild slurm_rpmbuild_user_home: "/home/{{ slurm_rpmbuild_user }}" - +slurm_rpm_repo_scp_path: root@yuma-s1:/var/www/html/slurm_repo +slurm_rpm_final_path: "/home/{{ slurm_rpmbuild_user }}/rpmbuild/RPMS/{{ ansible_architecture }}/" # defaults file for slurm-controller slurm_database_password: "default" @@ -12,8 +13,8 @@ slurm_database_password: "default" # slurm_version: "23.11.5-1" # Latest 25.05.0-1 -slurm_version: "23.11.11" - +#slurm_version: "23.11.11" +slurm_version: "24.11.5" # For Slurm < 24.05.8-0 the slurmd and slurmctld use "-D --systemd" # For Slurm >= 24.05.8-0, slurmd and slurmctld use only "--systemd" # https://github.com/SchedMD/slurm/blob/slurm-24.05/NEWS @@ -100,7 +101,7 @@ slurm_rpm_repo: "" slurm_build_jobs: 4 slurm_enable_cgroup_conf: true -slurm_enable_restd: false +slurm_enable_restd: true slurm_restd_port: 8911 slurm_restd_host: "0.0.0.0" slurm_restd_user: "{{undef(hint='You must specify the slurm rest api user')}}" @@ -144,7 +145,7 @@ slurm_conf_accounting_storage_external_host: "" slurm_enable_pam_adopt: false slurm_groups_allowed: [] slurm_enable_pmix: true -slurm_pmix_version: 5.0.1 +slurm_pmix_version: 5.0.8 slurm_force_install: false diff --git a/slurm/tasks/main.yml b/slurm/tasks/main.yml index 7ab33f3..5cc7c77 100644 --- a/slurm/tasks/main.yml +++ b/slurm/tasks/main.yml @@ -25,15 +25,13 @@ tags: - always -- name: Include install tasks - ansible.builtin.include_tasks: "install.yaml" - when: not slurm_rpm_install +- name: Check if Slurm Version is above 24.05.8-0 + ansible.builtin.include_tasks: "slurm_version_check.yaml" tags: - always - name: Include rpm install tasks ansible.builtin.include_tasks: "rpm_install.yaml" - when: slurm_rpm_install tags: - always diff --git a/slurm/tasks/rpm_install.yaml b/slurm/tasks/rpm_install.yaml index 17ac28b..c9810ad 100644 --- a/slurm/tasks/rpm_install.yaml +++ b/slurm/tasks/rpm_install.yaml @@ -1,17 +1,5 @@ -- name: Create local repo file - get_url: - url: "{{ slurm_rpm_repo }}" - dest: /etc/yum.repos.d/local.repo - mode: 0644 - owner: root - group: root - force: yes - when: not ansible_check_mode - tags: - - slurm - - name: Install slurm rpm packages - package: + yum: state: present name: - slurm @@ -23,7 +11,7 @@ - slurm_install_slurmd - name: Install slurm controller rpm packages - package: + yum: state: present name: - slurm-slurmctld @@ -34,7 +22,7 @@ - slurm_install_controller - name: Install slurmd rpm packages - package: + yum: state: present name: - slurm-slurmd @@ -45,7 +33,7 @@ - slurm_install_slurmd - name: Install slurmrestd rpm packages - package: + yum: state: present name: - slurm-slurmrestd diff --git a/slurm/tasks/rpmbuild.yaml b/slurm/tasks/rpmbuild.yaml index c804938..df7650d 100644 --- a/slurm/tasks/rpmbuild.yaml +++ b/slurm/tasks/rpmbuild.yaml @@ -77,6 +77,16 @@ ansible.builtin.include_tasks: rpmbuild_pmix.yaml when: slurm_enable_pmix and not slurm_pmix_rpm_path_stat.stat.exists + - name: Build Slurm if required ansible.builtin.include_tasks: rpmbuild_slurm.yaml +#- name: scp completed RPMs to repo +# ansible.builtin.command: +# cmd: "scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i {{ slurm_rpmbuild_user_home }}/.ssh/id_ed25519 {{ slurm_rpm_final_path }}* {{ slurm_rpm_repo_scp_path }}" +# when: slurm_build_rpms and slurm_rpm_final_path is defined and slurm_rpm_repo_scp_path is defined +# become: true +# become_user: "{{ slurm_rpmbuild_user_home }}" + +- name: rpmbuild end play + meta: end_play diff --git a/slurm/tasks/rpmbuild_slurm.yaml b/slurm/tasks/rpmbuild_slurm.yaml index 82ce5ed..fc11fe7 100644 --- a/slurm/tasks/rpmbuild_slurm.yaml +++ b/slurm/tasks/rpmbuild_slurm.yaml @@ -61,10 +61,6 @@ ansible.builtin.package_facts: manager: auto -- name: Dump Package-facts - ansible.builtin.debug: - var: ansible_facts.packages - - name: Check if PMix is installed ansible.builtin.set_fact: slurm_pmix_installed: "{{ 'pmix' in ansible_facts.packages }}" @@ -110,7 +106,7 @@ - name: rpmbuild slurmrestd option ansible.builtin.set_fact: - rpmbuild_restd_option: "-D '--with slurmrestd --with jwt'" + rpmbuild_restd_option: "--with slurmrestd --with jwt" when: slurm_enable_restd - name: show build command @@ -122,7 +118,4 @@ args: chdir: "{{slurm_tmpdir}}" become: true - become_user: "{{ slurm_rpmbuild_user }}" - -- name: Debug end play - meta: end_play + become_user: "{{ slurm_rpmbuild_user }}" \ No newline at end of file From 80ce0200c10326014d1940e0910da9912c57b4c3 Mon Sep 17 00:00:00 2001 From: Chirs Ruihl Date: Wed, 2 Jul 2025 20:39:28 -0400 Subject: [PATCH 08/31] #13 Setup new exec paths --- slurm/defaults/main.yml | 7 ++++--- slurm/tasks/install.yaml | 2 +- slurm/tasks/main.yml | 7 +++++++ slurm/tasks/pmix.yaml | 13 +------------ slurm/tasks/slurm_version_check.yaml | 3 ++- 5 files changed, 15 insertions(+), 17 deletions(-) diff --git a/slurm/defaults/main.yml b/slurm/defaults/main.yml index e12856d..c71a699 100644 --- a/slurm/defaults/main.yml +++ b/slurm/defaults/main.yml @@ -6,6 +6,7 @@ slurm_rpmbuild_user: slurmbuild slurm_rpmbuild_user_home: "/home/{{ slurm_rpmbuild_user }}" slurm_rpm_repo_scp_path: root@yuma-s1:/var/www/html/slurm_repo slurm_rpm_final_path: "/home/{{ slurm_rpmbuild_user }}/rpmbuild/RPMS/{{ ansible_architecture }}/" +slurm_configure: 1 # defaults file for slurm-controller slurm_database_password: "default" @@ -14,7 +15,7 @@ slurm_database_password: "default" # Latest 25.05.0-1 #slurm_version: "23.11.11" -slurm_version: "24.11.5" +slurm_version: "24.05.8-1" # For Slurm < 24.05.8-0 the slurmd and slurmctld use "-D --systemd" # For Slurm >= 24.05.8-0, slurmd and slurmctld use only "--systemd" # https://github.com/SchedMD/slurm/blob/slurm-24.05/NEWS @@ -104,8 +105,8 @@ slurm_enable_cgroup_conf: true slurm_enable_restd: true slurm_restd_port: 8911 slurm_restd_host: "0.0.0.0" -slurm_restd_user: "{{undef(hint='You must specify the slurm rest api user')}}" -slurm_restd_jwt_key: "{{undef(hint='You must specify the jwt key value')}}" +slurm_restd_user: srestd +slurm_restd_jwt_key: /var/spool/slurmctld/jwt_hs256.key # Slurm profile variables diff --git a/slurm/tasks/install.yaml b/slurm/tasks/install.yaml index 360b79f..2cf475a 100644 --- a/slurm/tasks/install.yaml +++ b/slurm/tasks/install.yaml @@ -4,7 +4,7 @@ state: directory path: "{{ slurm_tmpdir }}" mode: "0777" - ownder: "{{ slurm_user }}" + owner: "{{ slurm_user }}" group: "{{ slurm_user }}" when: install_slurm tags: diff --git a/slurm/tasks/main.yml b/slurm/tasks/main.yml index 5cc7c77..4f198a5 100644 --- a/slurm/tasks/main.yml +++ b/slurm/tasks/main.yml @@ -30,10 +30,17 @@ tags: - always +- name: Include install tasks + ansible.builtin.include_tasks: "install.yaml" + tags: + - always + when: true + - name: Include rpm install tasks ansible.builtin.include_tasks: "rpm_install.yaml" tags: - always + when: false - name: Include post-install tasks ansible.builtin.include_tasks: "post_install.yaml" diff --git a/slurm/tasks/pmix.yaml b/slurm/tasks/pmix.yaml index f93dc9d..f3f3f2b 100644 --- a/slurm/tasks/pmix.yaml +++ b/slurm/tasks/pmix.yaml @@ -5,24 +5,13 @@ state: present enablerepo: "{{ slurm_el_repos }}" - loop: "{{slurm_pmix_required_packages}}" + loop: "{{slurm_required_devel_packages}}" when: ansible_distribution_major_version | int >= 8 tags: - slurm - slurm_install_slurmd - slurm_install_controller -- name: Install required packages EL 7 - ansible.builtin.package: - name: "{{item}}" - state: present - loop: "{{slurm_pmix_required_packages}}" - when: ansible_distribution_major_version | int == 7 - tags: - - slurm - - slurm_install_slurmd - - slurm_install_controller - - name: Download pmix ansible.builtin.unarchive: src: "https://github.com/openpmix/openpmix/releases/download/v{{ slurm_pmix_version }}/pmix-{{ slurm_pmix_version }}.tar.gz" diff --git a/slurm/tasks/slurm_version_check.yaml b/slurm/tasks/slurm_version_check.yaml index d60aa2f..80dd1c4 100644 --- a/slurm/tasks/slurm_version_check.yaml +++ b/slurm/tasks/slurm_version_check.yaml @@ -27,7 +27,8 @@ - slurm_install_slurmd - slurm_configure -- name: Check for version > 24.05.8-0 + +- name: Check for version greater then '24.05.8-0' # We'll use this to build the slurmd and slurmctld command line opts ansible.builtin.set_fact: slurm_dash_d: "" From 3bcb3fa1f3d3a57731d00479539fe69d846cf924 Mon Sep 17 00:00:00 2001 From: Chirs Ruihl Date: Wed, 9 Jul 2025 09:48:13 -0400 Subject: [PATCH 09/31] #12 Ready for pull review --- slurm/defaults/main.yml | 12 ++++-- slurm/tasks/install.yaml | 55 +++++++++++++++++++++++++++- slurm/tasks/main.yml | 13 +++++-- slurm/tasks/rpm_install.yaml | 15 ++++++++ slurm/tasks/slurm_version_check.yaml | 2 +- 5 files changed, 88 insertions(+), 9 deletions(-) diff --git a/slurm/defaults/main.yml b/slurm/defaults/main.yml index c71a699..c1fdabb 100644 --- a/slurm/defaults/main.yml +++ b/slurm/defaults/main.yml @@ -2,11 +2,15 @@ # Build RPM Packages - when true, this will biuld RPM packages for slurm # and optionally PMIX then exit the role and complete. slurm_build_rpms: false +slurm_source_build: false + slurm_rpmbuild_user: slurmbuild slurm_rpmbuild_user_home: "/home/{{ slurm_rpmbuild_user }}" -slurm_rpm_repo_scp_path: root@yuma-s1:/var/www/html/slurm_repo +slurm_local_repo_name: slurm-repo +slurm_local_repo_host: yuma-s1 +slurm_rpm_repo_scp_path: "root@{{ slurm_local_repo_host }}:/var/www/html/slurm_repo slurm_rpm_final_path: "/home/{{ slurm_rpmbuild_user }}/rpmbuild/RPMS/{{ ansible_architecture }}/" -slurm_configure: 1 + # defaults file for slurm-controller slurm_database_password: "default" @@ -15,7 +19,8 @@ slurm_database_password: "default" # Latest 25.05.0-1 #slurm_version: "23.11.11" -slurm_version: "24.05.8-1" +slurm_version: "24.11.5" + # For Slurm < 24.05.8-0 the slurmd and slurmctld use "-D --systemd" # For Slurm >= 24.05.8-0, slurmd and slurmctld use only "--systemd" # https://github.com/SchedMD/slurm/blob/slurm-24.05/NEWS @@ -98,6 +103,7 @@ slurm_install_root: "/opt/slurm" slurm_update_symlink: yes slurm_disable_restart: false slurm_rpm_install: false +slurm_source_install: true slurm_rpm_repo: "" slurm_build_jobs: 4 diff --git a/slurm/tasks/install.yaml b/slurm/tasks/install.yaml index 2cf475a..dd409b8 100644 --- a/slurm/tasks/install.yaml +++ b/slurm/tasks/install.yaml @@ -4,8 +4,6 @@ state: directory path: "{{ slurm_tmpdir }}" mode: "0777" - owner: "{{ slurm_user }}" - group: "{{ slurm_user }}" when: install_slurm tags: - slurm @@ -23,6 +21,35 @@ tags: always + +- name: Set slurm download version + ansible.builtin.set_fact: + slurm_download_version: "{{ slurm_version | replace('.', '-')}}" + tags: + - slurm + - slurm_install_controller + - slurm_install_slurmd + - slurm_configure + +- name: Get slurm download version length + ansible.builtin.set_fact: + slurm_download_version_length: "{{ slurm_download_version.split('-') | length }}" + tags: + - slurm + - slurm_install_controller + - slurm_install_slurmd + - slurm_configure + +- name: Update slurm download version + ansible.builtin.set_fact: + slurm_download_version: "{{ slurm_download_version }}-1" + when: "slurm_download_version_length | int < 4" + tags: + - slurm + - slurm_install_controller + - slurm_install_slurmd + - slurm_configure + - name: Download slurm get_url: url: "https://github.com/SchedMD/slurm/archive/refs/\ @@ -47,6 +74,30 @@ - slurm_install_controller - slurm_install_slurmd + +- name: Configure slurm + command: "./configure --prefix=/{{slurm_install_directory}} --sysconfdir=/etc/slurm \ + --localstatedir=/var --runstatedir=/run {% if slurm_enable_restd %}--with-jwt={{slurm_install_directory}}{% endif %}\ + {% if slurm_enable_pmix %} --with-pmix={{slurm_install_directory}}{% endif %}" + args: + chdir: "{{slurm_tmpdir}}/slurm-slurm-{{slurm_download_version}}" + when: slurm_source_unpack is changed + register: slurm_configure + tags: + - slurm + - slurm_install_controller + - slurm_install_slurmd + +- name: Install slurm + shell: "make -j {{slurm_build_jobs}} && make install" + args: + chdir: "{{slurm_tmpdir}}/slurm-slurm-{{slurm_download_version}}" + when: slurm_configure is changed + tags: + - slurm + - slurm_install_controller + - slurm_install_slurmd + - name: Install pmi shell: "make -j {{slurm_build_jobs}} && make install" args: diff --git a/slurm/tasks/main.yml b/slurm/tasks/main.yml index 4f198a5..2f747bc 100644 --- a/slurm/tasks/main.yml +++ b/slurm/tasks/main.yml @@ -30,17 +30,24 @@ tags: - always -- name: Include install tasks +- name: Fail if both slurm_rpm_install and slurm_source_install + ansible.builtin.fail: + msg: "slurm_rpm_install and slurm_source_install are mutually exclusive" + when: slurm_rpm_install and slurm_source_install + +- name: Include install tasks ansible.builtin.include_tasks: "install.yaml" tags: - always - when: true +# when: slurm_source_install + when: false - name: Include rpm install tasks ansible.builtin.include_tasks: "rpm_install.yaml" tags: - always - when: false + when: true +# when: slurm_rpm_install - name: Include post-install tasks ansible.builtin.include_tasks: "post_install.yaml" diff --git a/slurm/tasks/rpm_install.yaml b/slurm/tasks/rpm_install.yaml index c9810ad..b0a86e6 100644 --- a/slurm/tasks/rpm_install.yaml +++ b/slurm/tasks/rpm_install.yaml @@ -1,3 +1,18 @@ +- name: Check Command + ansible.builtin.shell: + cmd: "dnf repoquery --repo slurm-repo slurm | awk -F: '{print $2}' | awk -F- '{print $1}'" + register: slurm_repo_version + +- name: Verify repo vs expected version + debug: + msg: + - "{{ slurm_repo_version.stdout }}" + +- name: Fail on Version mismatch + ansible.builtin.fail: + msg: "Required Slurm Version {{ slurm_version }} does not match available RPM on repo {{ slurm_repo_version.stdout }}" + when: slurm_repo_version.stdout != slurm_version + - name: Install slurm rpm packages yum: state: present diff --git a/slurm/tasks/slurm_version_check.yaml b/slurm/tasks/slurm_version_check.yaml index 80dd1c4..0a39c4b 100644 --- a/slurm/tasks/slurm_version_check.yaml +++ b/slurm/tasks/slurm_version_check.yaml @@ -28,7 +28,7 @@ - slurm_configure -- name: Check for version greater then '24.05.8-0' +- name: Check for version greater then '24.05.8' # We'll use this to build the slurmd and slurmctld command line opts ansible.builtin.set_fact: slurm_dash_d: "" From 74765e3f933896122be76b6c5bb3425447b5b388 Mon Sep 17 00:00:00 2001 From: Chirs Ruihl Date: Wed, 9 Jul 2025 10:36:41 -0400 Subject: [PATCH 10/31] #12 Update change log --- slurm/CHANGELOG.md | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/slurm/CHANGELOG.md b/slurm/CHANGELOG.md index fa1326a..206fbad 100644 --- a/slurm/CHANGELOG.md +++ b/slurm/CHANGELOG.md @@ -4,9 +4,16 @@ https://github.com/dstdev/ansible-roles/tree/cwr_dev New vars in slurm/defaults/main.yaml - slurm_build_rpms | bool + - slurm_rpm_install + - slurm source_install - slurm_rpmbuild_user | non-privleged user id - slurm_rpmbuild_user_home | home path + rpmbuild base - slurm_download_url | github or schedmd + - slurm_local_repo_name: + - slurm_local_repo_host: + - slurm_rpm_repo_scp_path: scp command to put rpms on repo + - slurm_rpm_final_path: + New run path when slurm_build_rpms is true @@ -25,6 +32,13 @@ New run path when slurm_build_rpms is true end_play +New install method vars: +slurm_rpm_install and slurm_source_install +slurm_rpm_install and slurm_source_install are mutually exclusive +slurm_rpm_install will install rpms from local RPM repo +slurm_source_install follows the existing source install path +New falure check +the latest version of slurm on the rpm repo must match the stated +install path on the - \ No newline at end of file From 2364cfac7b36f9fc71f78b6434430360144b0a1c Mon Sep 17 00:00:00 2001 From: Chirs Ruihl Date: Wed, 9 Jul 2025 10:36:54 -0400 Subject: [PATCH 11/31] update defaults main --- slurm/defaults/main.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/slurm/defaults/main.yml b/slurm/defaults/main.yml index c1fdabb..e1ac3b3 100644 --- a/slurm/defaults/main.yml +++ b/slurm/defaults/main.yml @@ -2,7 +2,6 @@ # Build RPM Packages - when true, this will biuld RPM packages for slurm # and optionally PMIX then exit the role and complete. slurm_build_rpms: false -slurm_source_build: false slurm_rpmbuild_user: slurmbuild slurm_rpmbuild_user_home: "/home/{{ slurm_rpmbuild_user }}" From 4f7c03c77c0b1c6cd32d63c06b0523a01321da7f Mon Sep 17 00:00:00 2001 From: Chirs Ruihl Date: Thu, 10 Jul 2025 13:56:50 -0400 Subject: [PATCH 12/31] pull request updates --- slurm/defaults/main.yml | 17 ++++++++--------- slurm/tasks/main.yml | 6 ++---- slurm/tasks/rpm_install.yaml | 2 +- slurm/tasks/rpmbuild.yaml | 11 +++++------ 4 files changed, 16 insertions(+), 20 deletions(-) diff --git a/slurm/defaults/main.yml b/slurm/defaults/main.yml index e1ac3b3..e34de2c 100644 --- a/slurm/defaults/main.yml +++ b/slurm/defaults/main.yml @@ -7,17 +7,16 @@ slurm_rpmbuild_user: slurmbuild slurm_rpmbuild_user_home: "/home/{{ slurm_rpmbuild_user }}" slurm_local_repo_name: slurm-repo slurm_local_repo_host: yuma-s1 -slurm_rpm_repo_scp_path: "root@{{ slurm_local_repo_host }}:/var/www/html/slurm_repo -slurm_rpm_final_path: "/home/{{ slurm_rpmbuild_user }}/rpmbuild/RPMS/{{ ansible_architecture }}/" +slurm_rpm_repo_scp_path: "root@{{ slurm_local_repo_host }}:/var/www/html/{{ slurm_local_repo_name }}" +slurm_rpm_final_path: "/home/{{ slurm_rpmbuild_user }}/rpmbuild/RPMS/{{ ansible_architecture }}" # defaults file for slurm-controller slurm_database_password: "default" -# slurm_version: "21.08.8-2" -# slurm_version: "23.11.5-1" -# Latest 25.05.0-1 - -#slurm_version: "23.11.11" +# Github slurm versions are nn.nn.nn-1 +# ShedMD release versions are nn.nn.nn +# slurm_version: "21.08.8-2" # Git Hub +# slurm_version: "23.11.11" # SchedMD Hub slurm_version: "24.11.5" # For Slurm < 24.05.8-0 the slurmd and slurmctld use "-D --systemd" @@ -29,7 +28,7 @@ slurm_dash_d: "-D" slurm_enable_systemd_daemon_flag: false slurm_jwt_version: "v1.12.0" slurm_slurmd: false -slurm_controller: true +slurm_controller: false slurm_uid: 450 slurm_gid: 450 slurm_controller_hostname: localhost @@ -107,7 +106,7 @@ slurm_rpm_repo: "" slurm_build_jobs: 4 slurm_enable_cgroup_conf: true -slurm_enable_restd: true +slurm_enable_restd: false slurm_restd_port: 8911 slurm_restd_host: "0.0.0.0" slurm_restd_user: srestd diff --git a/slurm/tasks/main.yml b/slurm/tasks/main.yml index 2f747bc..4fb90fd 100644 --- a/slurm/tasks/main.yml +++ b/slurm/tasks/main.yml @@ -39,15 +39,13 @@ ansible.builtin.include_tasks: "install.yaml" tags: - always -# when: slurm_source_install - when: false + when: slurm_source_install - name: Include rpm install tasks ansible.builtin.include_tasks: "rpm_install.yaml" tags: - always - when: true -# when: slurm_rpm_install + when: slurm_rpm_install - name: Include post-install tasks ansible.builtin.include_tasks: "post_install.yaml" diff --git a/slurm/tasks/rpm_install.yaml b/slurm/tasks/rpm_install.yaml index b0a86e6..35f8e35 100644 --- a/slurm/tasks/rpm_install.yaml +++ b/slurm/tasks/rpm_install.yaml @@ -1,6 +1,6 @@ - name: Check Command ansible.builtin.shell: - cmd: "dnf repoquery --repo slurm-repo slurm | awk -F: '{print $2}' | awk -F- '{print $1}'" + cmd: "dnf repoquery --repo {{ slurm_local_repo_name }} slurm | awk -F: '{print $2}' | awk -F- '{print $1}'" register: slurm_repo_version - name: Verify repo vs expected version diff --git a/slurm/tasks/rpmbuild.yaml b/slurm/tasks/rpmbuild.yaml index df7650d..f360393 100644 --- a/slurm/tasks/rpmbuild.yaml +++ b/slurm/tasks/rpmbuild.yaml @@ -81,12 +81,11 @@ - name: Build Slurm if required ansible.builtin.include_tasks: rpmbuild_slurm.yaml -#- name: scp completed RPMs to repo -# ansible.builtin.command: -# cmd: "scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i {{ slurm_rpmbuild_user_home }}/.ssh/id_ed25519 {{ slurm_rpm_final_path }}* {{ slurm_rpm_repo_scp_path }}" -# when: slurm_build_rpms and slurm_rpm_final_path is defined and slurm_rpm_repo_scp_path is defined -# become: true -# become_user: "{{ slurm_rpmbuild_user_home }}" +- name: scp completed RPMs to repo + ansible.builtin.command: + cmd: "scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null {{ slurm_rpm_final_path }}/* {{ slurm_rpm_repo_scp_path }}" + when: slurm_build_rpms and slurm_rpm_final_path is defined and slurm_rpm_repo_scp_path is defined + become_user: "{{ slurm_rpmbuild_user }}" - name: rpmbuild end play meta: end_play From b795db407574a8abee59533ce842464b5fb71251 Mon Sep 17 00:00:00 2001 From: Chirs Ruihl Date: Thu, 10 Jul 2025 13:59:48 -0400 Subject: [PATCH 13/31] slurm_daemon_spool_dir --- slurm/defaults/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/slurm/defaults/main.yml b/slurm/defaults/main.yml index e34de2c..65b3715 100644 --- a/slurm/defaults/main.yml +++ b/slurm/defaults/main.yml @@ -43,7 +43,7 @@ slurm_daemon_debug: 3 slurm_proctrack_type: "cgroup" slurm_nodes: [] slurm_partitions: [] -slurm_daemon_spool_dir: /var/spool/slurmd/ +slurm_daemon_spool_dir: /var/spool/slurmd slurm_state_save_location: /var/spool/slurmctld slurm_scheduler_type: backfill slurm_accounting_storage_enforce: 0 From d120b4a5990b8a047c88c1d7cd3e28786bf45fa4 Mon Sep 17 00:00:00 2001 From: Chirs Ruihl Date: Wed, 23 Jul 2025 23:23:28 -0400 Subject: [PATCH 14/31] more updates --- slurm/defaults/main.yml | 22 +++++++++++----------- slurm/tasks/main.yml | 2 +- slurm/tasks/rpm_install.yaml | 15 +++++++++++++++ slurm/tasks/rpmbuild.yaml | 22 ++++++++++++++-------- slurm/tasks/rpmbuild_slurm.yaml | 6 ++++++ 5 files changed, 47 insertions(+), 20 deletions(-) diff --git a/slurm/defaults/main.yml b/slurm/defaults/main.yml index 65b3715..cbd3d7c 100644 --- a/slurm/defaults/main.yml +++ b/slurm/defaults/main.yml @@ -5,30 +5,30 @@ slurm_build_rpms: false slurm_rpmbuild_user: slurmbuild slurm_rpmbuild_user_home: "/home/{{ slurm_rpmbuild_user }}" -slurm_local_repo_name: slurm-repo +slurm_local_repo_name: slurm_repo slurm_local_repo_host: yuma-s1 slurm_rpm_repo_scp_path: "root@{{ slurm_local_repo_host }}:/var/www/html/{{ slurm_local_repo_name }}" slurm_rpm_final_path: "/home/{{ slurm_rpmbuild_user }}/rpmbuild/RPMS/{{ ansible_architecture }}" - +slurm_code_source: schedmd # [schedmd | github] # defaults file for slurm-controller slurm_database_password: "default" # Github slurm versions are nn.nn.nn-1 # ShedMD release versions are nn.nn.nn -# slurm_version: "21.08.8-2" # Git Hub +# slurm_version: "21.08.8-1" # Git Hub # slurm_version: "23.11.11" # SchedMD Hub -slurm_version: "24.11.5" +slurm_version: "24.11.6" # For Slurm < 24.05.8-0 the slurmd and slurmctld use "-D --systemd" # For Slurm >= 24.05.8-0, slurmd and slurmctld use only "--systemd" # https://github.com/SchedMD/slurm/blob/slurm-24.05/NEWS -slurm_dasd_d_ver: "24.05.8-0" +slurm_dasd_d_ver: "24.05.8" slurm_dash_d: "-D" slurm_enable_systemd_daemon_flag: false -slurm_jwt_version: "v1.12.0" +slurm_jwt_version: "v2.1.2" slurm_slurmd: false -slurm_controller: false +slurm_controller: true slurm_uid: 450 slurm_gid: 450 slurm_controller_hostname: localhost @@ -100,13 +100,13 @@ slurm_dbd_password: "" slurm_install_root: "/opt/slurm" slurm_update_symlink: yes slurm_disable_restart: false -slurm_rpm_install: false -slurm_source_install: true +slurm_rpm_install: true +slurm_source_install: false slurm_rpm_repo: "" -slurm_build_jobs: 4 +slurm_build_jobs: 8 slurm_enable_cgroup_conf: true -slurm_enable_restd: false +slurm_enable_restd: true slurm_restd_port: 8911 slurm_restd_host: "0.0.0.0" slurm_restd_user: srestd diff --git a/slurm/tasks/main.yml b/slurm/tasks/main.yml index 4fb90fd..fa2c85f 100644 --- a/slurm/tasks/main.yml +++ b/slurm/tasks/main.yml @@ -1,5 +1,4 @@ --- - - name: Gather os specific variables ansible.builtin.include_vars: "{{ item }}" with_first_found: @@ -12,6 +11,7 @@ tags: - always + ################################################## # Exits role after the rpmbuildI(s) are complete. - name: Build RPM packages if needed diff --git a/slurm/tasks/rpm_install.yaml b/slurm/tasks/rpm_install.yaml index 35f8e35..ceabade 100644 --- a/slurm/tasks/rpm_install.yaml +++ b/slurm/tasks/rpm_install.yaml @@ -59,3 +59,18 @@ - slurm_install_restd +- name: Add jwt key + command: "dd if=/dev/random of=/var/spool/slurmctld/jwt_hs256.key bs=32 count=1" + when: slurm_controller and slurm_enable_restd + tags: + - slurm + - slurm_install_controller + - slurm_install_restd + +- name: Change file ownership, group and permissions + ansible.builtin.file: + path: /var/spool/slurmctld/jwt_hs256.key + owner: "{{ slurm_user }}" + group: "{{ slurm_user }}" + mode: '0600' + when: slurm_controller and slurm_enable_restd \ No newline at end of file diff --git a/slurm/tasks/rpmbuild.yaml b/slurm/tasks/rpmbuild.yaml index f360393..3fa7f44 100644 --- a/slurm/tasks/rpmbuild.yaml +++ b/slurm/tasks/rpmbuild.yaml @@ -43,10 +43,6 @@ ansible.builtin.package_facts: manager: auto -- name: Dump Package-facts - ansible.builtin.debug: - var: ansible_facts.packages - - name: Check if PMix is installed ansible.builtin.set_fact: slurm_pmix_installed: "{{ 'pmix' in ansible_facts.packages }}" @@ -72,20 +68,30 @@ - " ----------------------------------------------------------------------" - "slurm_pmix_installed: {{ slurm_pmix_installed }}" - "slurm_pmix_installed_version: {{ slurm_pmix_installed_version }}" + - " ----------------------------------------------------------------------" + - "slurm_enable_pmix: {{ slurm_enable_pmix }}" + - "slurm_pmix_rpm_path_stat.stat.exists: {{ slurm_pmix_rpm_path_stat.stat.exists }}" + - " ----------------------------------------------------------------------" - name: Build PMix if required ansible.builtin.include_tasks: rpmbuild_pmix.yaml - when: slurm_enable_pmix and not slurm_pmix_rpm_path_stat.stat.exists - + when: slurm_enable_pmix - name: Build Slurm if required ansible.builtin.include_tasks: rpmbuild_slurm.yaml - name: scp completed RPMs to repo - ansible.builtin.command: - cmd: "scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null {{ slurm_rpm_final_path }}/* {{ slurm_rpm_repo_scp_path }}" + ansible.builtin.shell: "scp {{ slurm_rpm_final_path }}/*.rpm {{ slurm_rpm_repo_scp_path }}" when: slurm_build_rpms and slurm_rpm_final_path is defined and slurm_rpm_repo_scp_path is defined become_user: "{{ slurm_rpmbuild_user }}" +- name: Run createrepo + ansible.builtin.command: + argv: + - ssh + - "{{ slurm_local_repo_host}}" + - createrepo + - "/var/www/html/{{ slurm_local_repo_name }}" + - name: rpmbuild end play meta: end_play diff --git a/slurm/tasks/rpmbuild_slurm.yaml b/slurm/tasks/rpmbuild_slurm.yaml index fc11fe7..7f3940c 100644 --- a/slurm/tasks/rpmbuild_slurm.yaml +++ b/slurm/tasks/rpmbuild_slurm.yaml @@ -35,6 +35,12 @@ msg: "PMIx RPM path {{ slurm_pmix_rpm_path }} does not exist. Please ensure the RPM is available for installation." when: slurm_enable_pmix and slurm_pmix_installed and not slurm_pmix_rpm_path_stat.stat.exists +- name: debug out + debug: + msg: + - "slurm_enable_pmix: {{ slurm_enable_pmix }}" + - "slurm_pmix_installed_version: {{ slurm_pmix_installed_version }}" + # Yum Install PMix RPM - name: Install PMix RPM ansible.builtin.yum: From 947540f46a53236a13272a47d0ef8b3dbe3086fa Mon Sep 17 00:00:00 2001 From: Chirs Ruihl Date: Thu, 24 Jul 2025 09:21:03 -0400 Subject: [PATCH 15/31] check slurm install method conflict --- slurm/defaults/main.yml | 3 +-- slurm/tasks/main.yml | 7 +++++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/slurm/defaults/main.yml b/slurm/defaults/main.yml index cbd3d7c..59477ba 100644 --- a/slurm/defaults/main.yml +++ b/slurm/defaults/main.yml @@ -9,7 +9,6 @@ slurm_local_repo_name: slurm_repo slurm_local_repo_host: yuma-s1 slurm_rpm_repo_scp_path: "root@{{ slurm_local_repo_host }}:/var/www/html/{{ slurm_local_repo_name }}" slurm_rpm_final_path: "/home/{{ slurm_rpmbuild_user }}/rpmbuild/RPMS/{{ ansible_architecture }}" -slurm_code_source: schedmd # [schedmd | github] # defaults file for slurm-controller slurm_database_password: "default" @@ -101,7 +100,7 @@ slurm_install_root: "/opt/slurm" slurm_update_symlink: yes slurm_disable_restart: false slurm_rpm_install: true -slurm_source_install: false +slurm_source_install: true slurm_rpm_repo: "" slurm_build_jobs: 8 diff --git a/slurm/tasks/main.yml b/slurm/tasks/main.yml index fa2c85f..99ecdbd 100644 --- a/slurm/tasks/main.yml +++ b/slurm/tasks/main.yml @@ -20,6 +20,13 @@ # role exits early if slurm_build_rpms == true ################################################## + +- name: Check install method + fail: + msg: + - "slurm_rpm_install and slurm_source_install are mutually exclusive." + when: slurm_rpm_install and slurm_source_install + - name: Include pre-install tasks ansible.builtin.include_tasks: "pre_install.yaml" tags: From b5476985607ea9940b97561bdb4648fe140eee06 Mon Sep 17 00:00:00 2001 From: Chirs Ruihl Date: Thu, 24 Jul 2025 10:01:55 -0400 Subject: [PATCH 16/31] slurm readme update --- slurm/README.md | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/slurm/README.md b/slurm/README.md index 192bcf2..455cb8f 100644 --- a/slurm/README.md +++ b/slurm/README.md @@ -1,4 +1,4 @@ -Role Name +Slurm ========= Install and configures slurm controller, daemons, and database. @@ -8,6 +8,29 @@ Requirements Running Mariadb/MySQL Role or instance and munge development libraries must be installed. +Example Build Command +--------------------- +``` +ansible-playbook -i inventory.ini -c local -e @test_install.json slurm.yml +``` + +Example Vars File +----------------- +slurm_install.json +``` +{ + "slurm_build_rpms": false, + "slurm_source_install": true, + "slurm_rpm_install": false, + "slurm_version": "23.11.11", + "slurm_enable_pmix": true, + "slurm_pmix_version": "5.0.8", + "slurm_enable_restd": true, + "slurm_jwt_version": "v2.1.2" + +} +``` + Role Variables -------------- From 247236c847c654e8953527b579423c0b08d27ef4 Mon Sep 17 00:00:00 2001 From: Chirs Ruihl Date: Fri, 25 Jul 2025 15:39:11 -0400 Subject: [PATCH 17/31] Create slurmbuild user before temdirs --- slurm/tasks/rpmbuild.yaml | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/slurm/tasks/rpmbuild.yaml b/slurm/tasks/rpmbuild.yaml index 3fa7f44..00b70b4 100644 --- a/slurm/tasks/rpmbuild.yaml +++ b/slurm/tasks/rpmbuild.yaml @@ -1,13 +1,4 @@ --- -- name: Create temporary source dir - ansible.builtin.file: - state: directory - path: "{{ slurm_tmpdir }}" - mode: "0777" - owner: "{{ slurm_rpmbuild_user }}" - group: "{{ slurm_rpmbuild_user }}" - - - name: Add slurmbuild user ansible.builtin.user: name: "{{ slurm_rpmbuild_user }}" @@ -17,6 +8,16 @@ home: "{{ slurm_rpmbuild_user_home }}" state: present + +- name: Create temporary source dir + ansible.builtin.file: + state: directory + path: "{{ slurm_tmpdir }}" + mode: "0777" + owner: "{{ slurm_rpmbuild_user }}" + group: "{{ slurm_rpmbuild_user }}" + + - name: Set Slurm RPM build variables ansible.builtin.set_fact: slurm_rpm_base_path: "{{slurm_rpmbuild_user_home}}/rpmbuild/RPMS/{{ ansible_architecture }}" From 82428e25900d22332597b43365adec033ed75888 Mon Sep 17 00:00:00 2001 From: Chirs Ruihl Date: Fri, 25 Jul 2025 15:55:54 -0400 Subject: [PATCH 18/31] fix cut and past error --- slurm/tasks/rpmbuild_slurm.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/slurm/tasks/rpmbuild_slurm.yaml b/slurm/tasks/rpmbuild_slurm.yaml index 7f3940c..64c599e 100644 --- a/slurm/tasks/rpmbuild_slurm.yaml +++ b/slurm/tasks/rpmbuild_slurm.yaml @@ -5,7 +5,7 @@ state: present enablerepo: "{{ slurm_el_repos }}" - loop: "{{slurm_pmix_required_devel_packages}}" + loop: "{ {slurm_required_devel_packages }}" when: ansible_distribution_major_version | int >= 8 - name: Download source bundle From f22756839920182a89cf0228d8a9c0031b55b317 Mon Sep 17 00:00:00 2001 From: Chirs Ruihl Date: Fri, 25 Jul 2025 16:01:34 -0400 Subject: [PATCH 19/31] curly brace fix --- slurm/tasks/rpmbuild_slurm.yaml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/slurm/tasks/rpmbuild_slurm.yaml b/slurm/tasks/rpmbuild_slurm.yaml index 64c599e..1a41193 100644 --- a/slurm/tasks/rpmbuild_slurm.yaml +++ b/slurm/tasks/rpmbuild_slurm.yaml @@ -4,11 +4,10 @@ name: "{{item}}" state: present enablerepo: "{{ slurm_el_repos }}" - - loop: "{ {slurm_required_devel_packages }}" + loop: "{{ slurm_required_devel_packages }}" when: ansible_distribution_major_version | int >= 8 -- name: Download source bundle +- name: Download source bundle ansible.builtin.get_url: url: "https://download.schedmd.com/slurm/slurm-{{ slurm_version }}.tar.bz2" dest: "{{ slurm_tmpdir }}/slurm-{{ slurm_version }}.tar.bz2" From 50aa77abf1c89c7944c3e414bbdb567ca6515558 Mon Sep 17 00:00:00 2001 From: Chirs Ruihl Date: Mon, 28 Jul 2025 23:39:05 -0400 Subject: [PATCH 20/31] more debug updates --- slurm/README.md | 26 +++++++++++++++++++------- slurm/vars/RedHat-9.yaml | 6 ++++++ 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/slurm/README.md b/slurm/README.md index 455cb8f..e11edf4 100644 --- a/slurm/README.md +++ b/slurm/README.md @@ -3,6 +3,10 @@ Slurm Install and configures slurm controller, daemons, and database. +RPMBuild Execution Path +----------------------- +When `slurm_build_rpms` is true, Slurm and optionally PMix rpms are build and copied out to the local RPM repo hosting Slurm and PMix packages. The role exits after the packages are copies over to the repo. + Requirements ------------ @@ -11,17 +15,17 @@ Running Mariadb/MySQL Role or instance and munge development libraries must be i Example Build Command --------------------- ``` -ansible-playbook -i inventory.ini -c local -e @test_install.json slurm.yml +ansible-playbook -i inventory.ini -c local -e @slurm_opts.json slurm.yml ``` Example Vars File ----------------- -slurm_install.json +slurm_opts.json ``` { "slurm_build_rpms": false, - "slurm_source_install": true, - "slurm_rpm_install": false, + "slurm_source_install": false, + "slurm_rpm_install": true, "slurm_version": "23.11.11", "slurm_enable_pmix": true, "slurm_pmix_version": "5.0.8", @@ -32,17 +36,25 @@ slurm_install.json ``` Role Variables --------------- +============== +rpmbuild +-------- | Name | Default Value | Description | |---------------------------------------------|-----------------------|-----------------------------------------------------------------------------------| -| mounts | [] | List of dictionaries defining the mount | +| slurm_rpmbuild_user | slurmbuild | Non-privileged user for rpmbuilds. This user will be created if necessary. +| slurm_rpmbuild_user_home |/home/{{ slurm_rpmbuild_user }}| rpmbuild root +| slurm_local_repo_name | "" | Name of Slurm RPM Repo +| slurm_local_repo_host | "" | Hostname for slrum RPM Repo +| slurm_rpm_repo_scp_path |root@{{ slurm_local_repo_host }}:/var/www/html/{{ slurm_local_repo_name }} | scp command to put packages +| slurm_rpm_final_path | | Path to local final rpm packages | slurm_accounting_storage_enforce | 0 | Accounting enforcement | | slurm_cgroup_automount | yes | Automount cgroups | | slurm_cgroup_constrain_cores | yes | Constrain cores available | | slurm_cgroup_constrain_ram_space | yes | Constrain ram space | -| slurm_cluster_name | cluster | Name for this cluster install | +| slurm_cluster_name | cluster | Name for this cluster install +| slurm_conf_max_job_count | 10000 | slurm.conf MaxJobCount | slurm_conf_accounting_storage_external_host | "" | External Accounting DB host ip and port | | slurm_conf_accouting_storage_tres | [] | AccoutingStorageTres Parameter | | slurm_conf_cli_filter_plugins | [] | List of filter/modification plugins | diff --git a/slurm/vars/RedHat-9.yaml b/slurm/vars/RedHat-9.yaml index d93f2ae..01dd223 100644 --- a/slurm/vars/RedHat-9.yaml +++ b/slurm/vars/RedHat-9.yaml @@ -31,6 +31,12 @@ slurm_required_devel_packages: - json-c-devel - http-parser - http-parser-devel + - libjwt-devel + - munge-devel + - munge-libs + - perl-ExtUtils-MakeMaker + - readline-devel + slurm_dbd_required_packages: - mariadb-server From 61368f4571a1a0f56c91369c13b1dbac1a249dd4 Mon Sep 17 00:00:00 2001 From: Chirs Ruihl Date: Wed, 30 Jul 2025 15:28:20 -0400 Subject: [PATCH 21/31] #17 & #18 - updates --- slurm/README.md | 5 +++-- slurm/defaults/main.yml | 27 ++++++++++++++++++++------- slurm/tasks/rpm_install.yaml | 7 +++++++ slurm/tasks/rpmbuild.yaml | 3 ++- 4 files changed, 32 insertions(+), 10 deletions(-) diff --git a/slurm/README.md b/slurm/README.md index e11edf4..ced90ef 100644 --- a/slurm/README.md +++ b/slurm/README.md @@ -5,7 +5,8 @@ Install and configures slurm controller, daemons, and database. RPMBuild Execution Path ----------------------- -When `slurm_build_rpms` is true, Slurm and optionally PMix rpms are build and copied out to the local RPM repo hosting Slurm and PMix packages. The role exits after the packages are copies over to the repo. +When `slurm_build_rpms` is true, Slurm and optionally PMix rpms are build and copied out to the local RPM repo hosting Slurm and PMix packages. The role exits after the packages are copies over to the repo. +Running `rpmbuild` using the code bundle from github is often problematic. For this reason, the rpmbuild path downloads the source bundle from SchedMD, not GitHub. Requirements ------------ @@ -47,7 +48,7 @@ rpmbuild | slurm_rpmbuild_user_home |/home/{{ slurm_rpmbuild_user }}| rpmbuild root | slurm_local_repo_name | "" | Name of Slurm RPM Repo | slurm_local_repo_host | "" | Hostname for slrum RPM Repo -| slurm_rpm_repo_scp_path |root@{{ slurm_local_repo_host }}:/var/www/html/{{ slurm_local_repo_name }} | scp command to put packages +| slurm_rpm_repo_scp_path |root@{{ slurm_local_repo_host }}:{{ slurm_rpm_server_path_base }}/{{ slurm_local_repo_name }} | scp command to put packages | slurm_rpm_final_path | | Path to local final rpm packages | slurm_accounting_storage_enforce | 0 | Accounting enforcement | | slurm_cgroup_automount | yes | Automount cgroups | diff --git a/slurm/defaults/main.yml b/slurm/defaults/main.yml index 59477ba..479088c 100644 --- a/slurm/defaults/main.yml +++ b/slurm/defaults/main.yml @@ -1,21 +1,34 @@ --- # Build RPM Packages - when true, this will biuld RPM packages for slurm # and optionally PMIX then exit the role and complete. -slurm_build_rpms: false +# RPM Build Details +#====================== +slurm_build_rpms: false slurm_rpmbuild_user: slurmbuild slurm_rpmbuild_user_home: "/home/{{ slurm_rpmbuild_user }}" +slurm_rpm_final_path: "/home/{{ slurm_rpmbuild_user }}/rpmbuild/RPMS/{{ ansible_architecture }}" + +# Local Slurm Repo Details +#========================== +# This assumes an HTTP based RPM Repo +slurm_local_repo_description: "Slurm RPM Repository" +# Path to HTTP server document root +slurm_rpm_server_path_base: "/var/www/html" slurm_local_repo_name: slurm_repo slurm_local_repo_host: yuma-s1 -slurm_rpm_repo_scp_path: "root@{{ slurm_local_repo_host }}:/var/www/html/{{ slurm_local_repo_name }}" -slurm_rpm_final_path: "/home/{{ slurm_rpmbuild_user }}/rpmbuild/RPMS/{{ ansible_architecture }}" +slurm_rpm_local_repo_url: "http://{{ slurm_local_repo_host }}/{{ slurm_local_repo_name }}" +slurm_rpm_repo_scp_path: "root@{{ slurm_local_repo_host }}:{{ slurm_rpm_server_path_base }}/{{ slurm_local_repo_name }}" + # defaults file for slurm-controller slurm_database_password: "default" + +# Code hosted at Github and SchedMD have different filename formats # Github slurm versions are nn.nn.nn-1 # ShedMD release versions are nn.nn.nn -# slurm_version: "21.08.8-1" # Git Hub -# slurm_version: "23.11.11" # SchedMD Hub +# slurm_version: "21.08.8-1" # GitHub +# slurm_version: "23.11.11" # SchedMD slurm_version: "24.11.6" # For Slurm < 24.05.8-0 the slurmd and slurmctld use "-D --systemd" @@ -99,8 +112,8 @@ slurm_dbd_password: "" slurm_install_root: "/opt/slurm" slurm_update_symlink: yes slurm_disable_restart: false -slurm_rpm_install: true -slurm_source_install: true +slurm_rpm_install: false +slurm_source_install: false slurm_rpm_repo: "" slurm_build_jobs: 8 diff --git a/slurm/tasks/rpm_install.yaml b/slurm/tasks/rpm_install.yaml index ceabade..b46177a 100644 --- a/slurm/tasks/rpm_install.yaml +++ b/slurm/tasks/rpm_install.yaml @@ -1,3 +1,10 @@ +- name: Add local custom repo + yum_repository: + name: "{{ slurm_local_repo_name }}" + description: "{{ slurm_local_repo_description }}" + baseurl: "{{ slurm_rpm_local_repo_url }}" + gpgcheck: no + - name: Check Command ansible.builtin.shell: cmd: "dnf repoquery --repo {{ slurm_local_repo_name }} slurm | awk -F: '{print $2}' | awk -F- '{print $1}'" diff --git a/slurm/tasks/rpmbuild.yaml b/slurm/tasks/rpmbuild.yaml index 00b70b4..1bc4ee5 100644 --- a/slurm/tasks/rpmbuild.yaml +++ b/slurm/tasks/rpmbuild.yaml @@ -92,7 +92,8 @@ - ssh - "{{ slurm_local_repo_host}}" - createrepo - - "/var/www/html/{{ slurm_local_repo_name }}" + - "{{ slurm_rpm_server_path_base }}/{{ slurm_local_repo_name }}" + - name: rpmbuild end play meta: end_play From 983724acdc912feafcac8391e92669d516b8e37b Mon Sep 17 00:00:00 2001 From: Chirs Ruihl Date: Wed, 30 Jul 2025 16:36:15 -0400 Subject: [PATCH 22/31] make sure remote slurm_local_repo_host exists --- slurm/tasks/rpmbuild.yaml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/slurm/tasks/rpmbuild.yaml b/slurm/tasks/rpmbuild.yaml index 1bc4ee5..7e6b247 100644 --- a/slurm/tasks/rpmbuild.yaml +++ b/slurm/tasks/rpmbuild.yaml @@ -81,10 +81,13 @@ - name: Build Slurm if required ansible.builtin.include_tasks: rpmbuild_slurm.yaml +- name: Make sure remote slurm repo path exists + ansible.builtin.shell: "ssh root@{{ slurm_local_repo_host }} mkdir -p {{ slurm_rpm_server_path_base }}/{{ slurm_local_repo_name }}" + - name: scp completed RPMs to repo ansible.builtin.shell: "scp {{ slurm_rpm_final_path }}/*.rpm {{ slurm_rpm_repo_scp_path }}" - when: slurm_build_rpms and slurm_rpm_final_path is defined and slurm_rpm_repo_scp_path is defined - become_user: "{{ slurm_rpmbuild_user }}" + + - name: Run createrepo ansible.builtin.command: From 1401f280ba5b029cdd0db927751b15f67903a35b Mon Sep 17 00:00:00 2001 From: Chirs Ruihl Date: Wed, 30 Jul 2025 16:36:38 -0400 Subject: [PATCH 23/31] spacing fix --- slurm/tasks/rpmbuild.yaml | 2 -- 1 file changed, 2 deletions(-) diff --git a/slurm/tasks/rpmbuild.yaml b/slurm/tasks/rpmbuild.yaml index 7e6b247..6979a3c 100644 --- a/slurm/tasks/rpmbuild.yaml +++ b/slurm/tasks/rpmbuild.yaml @@ -87,8 +87,6 @@ - name: scp completed RPMs to repo ansible.builtin.shell: "scp {{ slurm_rpm_final_path }}/*.rpm {{ slurm_rpm_repo_scp_path }}" - - - name: Run createrepo ansible.builtin.command: argv: From 35cfaa5b1ae2043e338189ff8bc9c8c968ec7ca1 Mon Sep 17 00:00:00 2001 From: Chirs Ruihl Date: Thu, 21 Aug 2025 10:00:17 -0400 Subject: [PATCH 24/31] system service templates --- slurm/defaults/main.yml | 10 +++++++-- slurm/tasks/rpmbuild.yaml | 17 ++++++++++++++- slurm/tasks/rpmbuild_slurm.yaml | 2 +- slurm/tasks/slurmd.yaml | 13 +++++++++++ slurm/templates/slurm.repo.j2 | 5 +++++ slurm/templates/slurmd.sysconfig.j2 | 29 +++++++++++++++++++++++++ slurm/templates/slurmrestd.sysconfig.j2 | 1 + 7 files changed, 73 insertions(+), 4 deletions(-) create mode 100644 slurm/templates/slurm.repo.j2 create mode 100644 slurm/templates/slurmd.sysconfig.j2 create mode 100644 slurm/templates/slurmrestd.sysconfig.j2 diff --git a/slurm/defaults/main.yml b/slurm/defaults/main.yml index 479088c..e1c4cb4 100644 --- a/slurm/defaults/main.yml +++ b/slurm/defaults/main.yml @@ -8,6 +8,7 @@ slurm_build_rpms: false slurm_rpmbuild_user: slurmbuild slurm_rpmbuild_user_home: "/home/{{ slurm_rpmbuild_user }}" slurm_rpm_final_path: "/home/{{ slurm_rpmbuild_user }}/rpmbuild/RPMS/{{ ansible_architecture }}" +slurm_local_repo_def_path: /etc/yum.repos.d/slurm.repo # Local Slurm Repo Details #========================== @@ -18,7 +19,8 @@ slurm_rpm_server_path_base: "/var/www/html" slurm_local_repo_name: slurm_repo slurm_local_repo_host: yuma-s1 slurm_rpm_local_repo_url: "http://{{ slurm_local_repo_host }}/{{ slurm_local_repo_name }}" -slurm_rpm_repo_scp_path: "root@{{ slurm_local_repo_host }}:{{ slurm_rpm_server_path_base }}/{{ slurm_local_repo_name }}" +slurm_rpm_repo_path: "{{ slurm_rpm_server_path_base }}/{{ slurm_local_repo_name }}" +slurm_rpm_repo_scp_path: "root@{{ slurm_local_repo_host }}:{{ slurm_rpm_repo_path }}" # defaults file for slurm-controller @@ -40,7 +42,7 @@ slurm_dash_d: "-D" slurm_enable_systemd_daemon_flag: false slurm_jwt_version: "v2.1.2" slurm_slurmd: false -slurm_controller: true +slurm_controller: false slurm_uid: 450 slurm_gid: 450 slurm_controller_hostname: localhost @@ -168,3 +170,7 @@ slurm_force_install: false slurm_conf_extra: {} slurmdbd_conf_extra: {} + + +slurm_rpm_check_path: "{{ slurm_rpmbuild_user_home }}/rpmbuild/RPMS/{{ ansible_architecture }}/slurm-{{ slurm_version }}-1.el{{ ansible_distribution_major_version }}.{{ ansible_architecture }}.rpm" +pmix_rpm_check_path: "{{ slurm_rpmbuild_user_home }}/rpmbuild/RPMS/{{ ansible_architecture }}/pmix-{{ slurm_pmix_version }}-1.el{{ ansible_distribution_major_version }}.{{ ansible_architecture }}.rpm" \ No newline at end of file diff --git a/slurm/tasks/rpmbuild.yaml b/slurm/tasks/rpmbuild.yaml index 6979a3c..3a8ff22 100644 --- a/slurm/tasks/rpmbuild.yaml +++ b/slurm/tasks/rpmbuild.yaml @@ -74,10 +74,12 @@ - "slurm_pmix_rpm_path_stat.stat.exists: {{ slurm_pmix_rpm_path_stat.stat.exists }}" - " ----------------------------------------------------------------------" + - name: Build PMix if required ansible.builtin.include_tasks: rpmbuild_pmix.yaml when: slurm_enable_pmix + - name: Build Slurm if required ansible.builtin.include_tasks: rpmbuild_slurm.yaml @@ -86,7 +88,7 @@ - name: scp completed RPMs to repo ansible.builtin.shell: "scp {{ slurm_rpm_final_path }}/*.rpm {{ slurm_rpm_repo_scp_path }}" - + - name: Run createrepo ansible.builtin.command: argv: @@ -95,6 +97,19 @@ - createrepo - "{{ slurm_rpm_server_path_base }}/{{ slurm_local_repo_name }}" +- name: set permissions on remote repo path + ansible.builtin.shell: "ssh root@{{ slurm_local_repo_host }} chown -R apache:apache {{ slurm_rpm_repo_path }}" + +- name: Stat slurm repo + ansible.builtin.stat: + path: "{{slurm_local_repo_def_path}}" + register: slurm_repo_check + +- name: Setup local slurm repo definition + ansible.builtin.template: + src: slurm.repo.j2 + dest: "{{slurm_local_repo_def_path}}" + when: not slurm_repo_check.stat.exists - name: rpmbuild end play meta: end_play diff --git a/slurm/tasks/rpmbuild_slurm.yaml b/slurm/tasks/rpmbuild_slurm.yaml index 1a41193..3d43294 100644 --- a/slurm/tasks/rpmbuild_slurm.yaml +++ b/slurm/tasks/rpmbuild_slurm.yaml @@ -95,7 +95,7 @@ - name: Base rpmbuild command ansible.builtin.set_fact: rpmbuild_cmd: "rpmbuild -D '_prefix {{ slurm_install_directory }}'" - + - name: rpmbuild pmix option default to "" ansible.builtin.set_fact: rpmbuild_pmix_option: "" diff --git a/slurm/tasks/slurmd.yaml b/slurm/tasks/slurmd.yaml index 414e527..8996c92 100644 --- a/slurm/tasks/slurmd.yaml +++ b/slurm/tasks/slurmd.yaml @@ -10,6 +10,19 @@ - slurm_install_slurmd - slurm_configure + +- name: create slurmd sysconfig file + ansible.builtin.template: + src: templates/slurmd.sysconfig.j2 + dest: /etc/sysconfig/slurmd + owner: root + group: root + mode: "0644" + when: slurm_rpm_install + tags: + - slurm + - slurm_install_slurmd + # In case another instance of slurmd.service is runnig - name: Restart systemceld systemd: diff --git a/slurm/templates/slurm.repo.j2 b/slurm/templates/slurm.repo.j2 new file mode 100644 index 0000000..99737b2 --- /dev/null +++ b/slurm/templates/slurm.repo.j2 @@ -0,0 +1,5 @@ +[slurm_repo] +baseurl = {{ slurm_rpm_local_repo_url }} +enabled = 1 +gpgcheck = 0 +name = Local Slurm Repo \ No newline at end of file diff --git a/slurm/templates/slurmd.sysconfig.j2 b/slurm/templates/slurmd.sysconfig.j2 new file mode 100644 index 0000000..82ddf72 --- /dev/null +++ b/slurm/templates/slurmd.sysconfig.j2 @@ -0,0 +1,29 @@ +[Unit] +Description=Slurm node daemon +After=munge.service network-online.target remote-fs.target +Wants=network-online.target +#ConditionPathExists=/etc/slurm.conf + +[Service] +Type=notify +EnvironmentFile=-/etc/sysconfig/slurmd +EnvironmentFile=-/etc/default/slurmd +RuntimeDirectory=slurm +RuntimeDirectoryMode=0755 +ExecStart={{slurm_install_symlink}}/sbin/slurmd {{ slurm_dash_d }} -s --conf-server {{slurm_controller_ip}}:{{slurm_controller_port}} --systemd $SLURMD_OPTIONS +ExecReload=/bin/kill -HUP $MAINPID +KillMode=process +LimitNOFILE=131072 +LimitMEMLOCK=infinity +LimitSTACK=infinity +Delegate=yes + + +# Uncomment the following lines to disable logging through journald. +# NOTE: It may be preferable to set these through an override file instead. +#StandardOutput=null +#StandardError=null + +[Install] +WantedBy=multi-user.target + diff --git a/slurm/templates/slurmrestd.sysconfig.j2 b/slurm/templates/slurmrestd.sysconfig.j2 new file mode 100644 index 0000000..43d3a1d --- /dev/null +++ b/slurm/templates/slurmrestd.sysconfig.j2 @@ -0,0 +1 @@ +SLURMRESTD_OPTIONS="0.0.0.0:{{ slurm_restd_port }}" \ No newline at end of file From ab6a7a2b125c7df4d10e62b8080a9fe36ae25a78 Mon Sep 17 00:00:00 2001 From: Chirs Ruihl Date: Thu, 21 Aug 2025 20:01:49 -0400 Subject: [PATCH 25/31] #19 Update templates and source vs rpm paths --- slurm/tasks/slurmctld.yaml | 1 + slurm/tasks/slurmd.yaml | 2 ++ slurm/tasks/slurmdbd.yaml | 1 + slurm/tasks/slurmrestd.yaml | 13 +++++++++++++ slurm/templates/slurmd.sysconfig.j2 | 30 +---------------------------- 5 files changed, 18 insertions(+), 29 deletions(-) diff --git a/slurm/tasks/slurmctld.yaml b/slurm/tasks/slurmctld.yaml index 70a0791..bdcd9d7 100755 --- a/slurm/tasks/slurmctld.yaml +++ b/slurm/tasks/slurmctld.yaml @@ -122,6 +122,7 @@ tags: - slurm - slurm_install_controller + when: slurm_source_install - name: Start slurmctld service ansible.builtin.service: diff --git a/slurm/tasks/slurmd.yaml b/slurm/tasks/slurmd.yaml index 8996c92..a0c8686 100644 --- a/slurm/tasks/slurmd.yaml +++ b/slurm/tasks/slurmd.yaml @@ -9,6 +9,7 @@ - slurm - slurm_install_slurmd - slurm_configure + when: slurm_source_install - name: create slurmd sysconfig file @@ -22,6 +23,7 @@ tags: - slurm - slurm_install_slurmd + when: slurm_rpm_install # In case another instance of slurmd.service is runnig - name: Restart systemceld diff --git a/slurm/tasks/slurmdbd.yaml b/slurm/tasks/slurmdbd.yaml index 1af6556..5d99e26 100644 --- a/slurm/tasks/slurmdbd.yaml +++ b/slurm/tasks/slurmdbd.yaml @@ -91,6 +91,7 @@ tags: - slurm - slurm_install_controller + when: slurm_source_install - name: Start slurmdbd service ansible.builtin.service: diff --git a/slurm/tasks/slurmrestd.yaml b/slurm/tasks/slurmrestd.yaml index 789d0f4..6b98cdc 100644 --- a/slurm/tasks/slurmrestd.yaml +++ b/slurm/tasks/slurmrestd.yaml @@ -9,6 +9,19 @@ tags: - slurm - slurm_install_slurmd + when: slurm_source_install + +- name: create slurmrestd service file + ansible.builtin.template: + src: templates/slurmrestd.sysconfig.j2 + dest: /etc/sysconfig/slurmrestd + owner: root + group: root + mode: "0644" + tags: + - slurm + - slurm_install_slurmd + when: slurm_rpm_install - name: Start slurmrestd service ansible.builtin.service: diff --git a/slurm/templates/slurmd.sysconfig.j2 b/slurm/templates/slurmd.sysconfig.j2 index 82ddf72..0175279 100644 --- a/slurm/templates/slurmd.sysconfig.j2 +++ b/slurm/templates/slurmd.sysconfig.j2 @@ -1,29 +1 @@ -[Unit] -Description=Slurm node daemon -After=munge.service network-online.target remote-fs.target -Wants=network-online.target -#ConditionPathExists=/etc/slurm.conf - -[Service] -Type=notify -EnvironmentFile=-/etc/sysconfig/slurmd -EnvironmentFile=-/etc/default/slurmd -RuntimeDirectory=slurm -RuntimeDirectoryMode=0755 -ExecStart={{slurm_install_symlink}}/sbin/slurmd {{ slurm_dash_d }} -s --conf-server {{slurm_controller_ip}}:{{slurm_controller_port}} --systemd $SLURMD_OPTIONS -ExecReload=/bin/kill -HUP $MAINPID -KillMode=process -LimitNOFILE=131072 -LimitMEMLOCK=infinity -LimitSTACK=infinity -Delegate=yes - - -# Uncomment the following lines to disable logging through journald. -# NOTE: It may be preferable to set these through an override file instead. -#StandardOutput=null -#StandardError=null - -[Install] -WantedBy=multi-user.target - +SLURMD_OPTIONS="-s --conf-server {{slurm_controller_ip}}:{{slurm_controller_port}}" \ No newline at end of file From ad3447ea2b21e0ff064ebbd6cf005e55a3f6ec85 Mon Sep 17 00:00:00 2001 From: Chirs Ruihl Date: Fri, 22 Aug 2025 07:55:31 -0400 Subject: [PATCH 26/31] #19 template update --- slurm/defaults/main.yml | 2 +- slurm/tasks/rpmbuild.yaml | 11 ----------- slurm/templates/slurmrestd.sysconfig.j2 | 2 +- 3 files changed, 2 insertions(+), 13 deletions(-) diff --git a/slurm/defaults/main.yml b/slurm/defaults/main.yml index e1c4cb4..cb27715 100644 --- a/slurm/defaults/main.yml +++ b/slurm/defaults/main.yml @@ -16,7 +16,7 @@ slurm_local_repo_def_path: /etc/yum.repos.d/slurm.repo slurm_local_repo_description: "Slurm RPM Repository" # Path to HTTP server document root slurm_rpm_server_path_base: "/var/www/html" -slurm_local_repo_name: slurm_repo +slurm_local_repo_name: slurm slurm_local_repo_host: yuma-s1 slurm_rpm_local_repo_url: "http://{{ slurm_local_repo_host }}/{{ slurm_local_repo_name }}" slurm_rpm_repo_path: "{{ slurm_rpm_server_path_base }}/{{ slurm_local_repo_name }}" diff --git a/slurm/tasks/rpmbuild.yaml b/slurm/tasks/rpmbuild.yaml index 3a8ff22..a7a9877 100644 --- a/slurm/tasks/rpmbuild.yaml +++ b/slurm/tasks/rpmbuild.yaml @@ -100,16 +100,5 @@ - name: set permissions on remote repo path ansible.builtin.shell: "ssh root@{{ slurm_local_repo_host }} chown -R apache:apache {{ slurm_rpm_repo_path }}" -- name: Stat slurm repo - ansible.builtin.stat: - path: "{{slurm_local_repo_def_path}}" - register: slurm_repo_check - -- name: Setup local slurm repo definition - ansible.builtin.template: - src: slurm.repo.j2 - dest: "{{slurm_local_repo_def_path}}" - when: not slurm_repo_check.stat.exists - - name: rpmbuild end play meta: end_play diff --git a/slurm/templates/slurmrestd.sysconfig.j2 b/slurm/templates/slurmrestd.sysconfig.j2 index 43d3a1d..2ef4300 100644 --- a/slurm/templates/slurmrestd.sysconfig.j2 +++ b/slurm/templates/slurmrestd.sysconfig.j2 @@ -1 +1 @@ -SLURMRESTD_OPTIONS="0.0.0.0:{{ slurm_restd_port }}" \ No newline at end of file +SLURMRESTD_OPTIONS="{{slurm_restd_host}}:{{ slurm_restd_port }}" \ No newline at end of file From b17b3243e7700f11fe81582666f70edf9a108e98 Mon Sep 17 00:00:00 2001 From: Chirs Ruihl Date: Fri, 22 Aug 2025 12:56:31 -0400 Subject: [PATCH 27/31] #19 slurmd typo and add user to restd.sysconfig --- slurm/tasks/slurmd.yaml | 1 - slurm/templates/slurmrestd.sysconfig.j2 | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/slurm/tasks/slurmd.yaml b/slurm/tasks/slurmd.yaml index a0c8686..f875c3c 100644 --- a/slurm/tasks/slurmd.yaml +++ b/slurm/tasks/slurmd.yaml @@ -23,7 +23,6 @@ tags: - slurm - slurm_install_slurmd - when: slurm_rpm_install # In case another instance of slurmd.service is runnig - name: Restart systemceld diff --git a/slurm/templates/slurmrestd.sysconfig.j2 b/slurm/templates/slurmrestd.sysconfig.j2 index 2ef4300..b64c9e8 100644 --- a/slurm/templates/slurmrestd.sysconfig.j2 +++ b/slurm/templates/slurmrestd.sysconfig.j2 @@ -1 +1 @@ -SLURMRESTD_OPTIONS="{{slurm_restd_host}}:{{ slurm_restd_port }}" \ No newline at end of file +SLURMRESTD_OPTIONS="-u {{ slurm_restd_user }} -g {{ slurm_restd_user }} {{slurm_restd_host}}:{{ slurm_restd_port }}" \ No newline at end of file From 83c3cdf67d66067124832204fc687d274d39972d Mon Sep 17 00:00:00 2001 From: Chirs Ruihl Date: Tue, 26 Aug 2025 18:28:49 -0400 Subject: [PATCH 28/31] #21 JWT Source + rpm conflict --- slurm/defaults/main.yml | 1 + slurm/tasks/install.yaml | 20 ++++++++++++++++++-- slurm/tasks/main.yml | 7 +++++-- slurm/tasks/rpmbuild.yaml | 4 ---- slurm/tasks/rpmbuild_slurm.yaml | 4 ---- slurm/tasks/slurmrestd.yaml | 10 ++++++++++ 6 files changed, 34 insertions(+), 12 deletions(-) diff --git a/slurm/defaults/main.yml b/slurm/defaults/main.yml index cb27715..5a6e239 100644 --- a/slurm/defaults/main.yml +++ b/slurm/defaults/main.yml @@ -40,6 +40,7 @@ slurm_dasd_d_ver: "24.05.8" slurm_dash_d: "-D" slurm_enable_systemd_daemon_flag: false +slurm_build_jwt_source: false slurm_jwt_version: "v2.1.2" slurm_slurmd: false slurm_controller: false diff --git a/slurm/tasks/install.yaml b/slurm/tasks/install.yaml index dd409b8..0c39fda 100644 --- a/slurm/tasks/install.yaml +++ b/slurm/tasks/install.yaml @@ -11,8 +11,24 @@ - slurm_install_slurmd - slurm_install_restd +- name: Install required development packages + ansible.builtin.dnf: + name: "{{item}}" + state: present + enablerepo: "{{ slurm_el_repos }}" + loop: "{{ slurm_required_devel_packages }}" + when: ansible_distribution_major_version | int >= 8 + +# Fail if slurm_build_jwt_source is true and jwt is installed +- ansible.builtin.fail: + msg: + - "JWT is already installed via RPM - installing from source is not supported." + - "remove jwt rpm packages before building from source." + when: slurm_build_jwt_source and jwt_packages | length > 0 + +# Build and install JWT from source - ansible.builtin.include_tasks: "jwt.yaml" - when: slurm_enable_restd and install_slurm + when: slurm_enable_restd and install_slurm and slurm_build_jwt_source tags: always @@ -77,7 +93,7 @@ - name: Configure slurm command: "./configure --prefix=/{{slurm_install_directory}} --sysconfdir=/etc/slurm \ - --localstatedir=/var --runstatedir=/run {% if slurm_enable_restd %}--with-jwt={{slurm_install_directory}}{% endif %}\ + --localstatedir=/var --runstatedir=/run {% if slurm_enable_restd and slurm_build_jwt_source %}--with-jwt={{slurm_install_directory}}{% endif %}\ {% if slurm_enable_pmix %} --with-pmix={{slurm_install_directory}}{% endif %}" args: chdir: "{{slurm_tmpdir}}/slurm-slurm-{{slurm_download_version}}" diff --git a/slurm/tasks/main.yml b/slurm/tasks/main.yml index 99ecdbd..cefcfc5 100644 --- a/slurm/tasks/main.yml +++ b/slurm/tasks/main.yml @@ -11,9 +11,12 @@ tags: - always - +- name: Gather package facts + ansible.builtin.package_facts: + manager: "auto" + ################################################## -# Exits role after the rpmbuildI(s) are complete. +# Exits role after the rpmbuild(s) are complete. - name: Build RPM packages if needed ansible.builtin.include_tasks: "rpmbuild.yaml" when: slurm_build_rpms diff --git a/slurm/tasks/rpmbuild.yaml b/slurm/tasks/rpmbuild.yaml index a7a9877..4d45c04 100644 --- a/slurm/tasks/rpmbuild.yaml +++ b/slurm/tasks/rpmbuild.yaml @@ -40,10 +40,6 @@ path: "{{ slurm_pmix_expected_root_path }}" register: slurm_pmix_expected_root_path_stat -- name: Get installed RPMs - ansible.builtin.package_facts: - manager: auto - - name: Check if PMix is installed ansible.builtin.set_fact: slurm_pmix_installed: "{{ 'pmix' in ansible_facts.packages }}" diff --git a/slurm/tasks/rpmbuild_slurm.yaml b/slurm/tasks/rpmbuild_slurm.yaml index 3d43294..36fa381 100644 --- a/slurm/tasks/rpmbuild_slurm.yaml +++ b/slurm/tasks/rpmbuild_slurm.yaml @@ -62,10 +62,6 @@ path: "{{ slurm_pmix_expected_root_path }}" register: slurm_pmix_expected_root_path_stat -- name: Get installed RPMs - ansible.builtin.package_facts: - manager: auto - - name: Check if PMix is installed ansible.builtin.set_fact: slurm_pmix_installed: "{{ 'pmix' in ansible_facts.packages }}" diff --git a/slurm/tasks/slurmrestd.yaml b/slurm/tasks/slurmrestd.yaml index 6b98cdc..30b98ba 100644 --- a/slurm/tasks/slurmrestd.yaml +++ b/slurm/tasks/slurmrestd.yaml @@ -23,6 +23,16 @@ - slurm_install_slurmd when: slurm_rpm_install +- name: Create jwt key + ansible.builtin.copy: + dest: "{{slurm_state_save_location}}/jwt_hs256.key" + content: "{{slurm_restd_jwt_key}}" + owner: "{{slurm_uid}}" + group: "{{slurm_gid}}" + mode: "0600" + tags: + - slurm_install_restd + - name: Start slurmrestd service ansible.builtin.service: name: slurmrestd From 6774f4e9879f130bc888e14f872c361888503ad0 Mon Sep 17 00:00:00 2001 From: Chirs Ruihl Date: Tue, 26 Aug 2025 21:58:44 -0400 Subject: [PATCH 29/31] #21 debug updates --- slurm/tasks/install.yaml | 16 ++++++++++++++-- slurm/tasks/slurmrestd.yaml | 10 ---------- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/slurm/tasks/install.yaml b/slurm/tasks/install.yaml index 0c39fda..30439f6 100644 --- a/slurm/tasks/install.yaml +++ b/slurm/tasks/install.yaml @@ -27,8 +27,9 @@ when: slurm_build_jwt_source and jwt_packages | length > 0 # Build and install JWT from source -- ansible.builtin.include_tasks: "jwt.yaml" - when: slurm_enable_restd and install_slurm and slurm_build_jwt_source +- name: Build and install JWT from source + ansible.builtin.include_tasks: "jwt.yaml" + when: slurm_enable_restd and slurm_build_jwt_source tags: always @@ -133,6 +134,17 @@ - slurm - slurm_install_slurmd +- name: Create jwt key + ansible.builtin.copy: + dest: "{{slurm_state_save_location}}/jwt_hs256.key" + content: "{{slurm_restd_jwt_key}}" + owner: "{{slurm_uid}}" + group: "{{slurm_gid}}" + mode: "0600" + tags: + - slurm_install_restd + when: slurm_enable_restd + # TODO: Cleanup tmp spaces #- name: Clean up tmp space #ansible.builtin.file: diff --git a/slurm/tasks/slurmrestd.yaml b/slurm/tasks/slurmrestd.yaml index 30b98ba..6b98cdc 100644 --- a/slurm/tasks/slurmrestd.yaml +++ b/slurm/tasks/slurmrestd.yaml @@ -23,16 +23,6 @@ - slurm_install_slurmd when: slurm_rpm_install -- name: Create jwt key - ansible.builtin.copy: - dest: "{{slurm_state_save_location}}/jwt_hs256.key" - content: "{{slurm_restd_jwt_key}}" - owner: "{{slurm_uid}}" - group: "{{slurm_gid}}" - mode: "0600" - tags: - - slurm_install_restd - - name: Start slurmrestd service ansible.builtin.service: name: slurmrestd From 292def304b9e7750909250d70e6e08d7242083d0 Mon Sep 17 00:00:00 2001 From: Chirs Ruihl Date: Tue, 26 Aug 2025 23:30:20 -0400 Subject: [PATCH 30/31] #21 another bug fix --- slurm/tasks/install.yaml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/slurm/tasks/install.yaml b/slurm/tasks/install.yaml index 30439f6..b2c0ce9 100644 --- a/slurm/tasks/install.yaml +++ b/slurm/tasks/install.yaml @@ -19,6 +19,15 @@ loop: "{{ slurm_required_devel_packages }}" when: ansible_distribution_major_version | int >= 8 +# Check if JWT RPM is installed +- name: Check if JWT RPM is installed + ansible.builtin.set_fact: + jwt_packages: "{{ ansible_facts.packages['libjwt'] | default([]) }}" + tags: + - slurm + - slurm_install_restd + when: slurm_enable_restd and slurm_build_jwt_source + # Fail if slurm_build_jwt_source is true and jwt is installed - ansible.builtin.fail: msg: @@ -144,7 +153,7 @@ tags: - slurm_install_restd when: slurm_enable_restd - + # TODO: Cleanup tmp spaces #- name: Clean up tmp space #ansible.builtin.file: From ebd95f702e0ebedb1a36be4c3def6622ac350a99 Mon Sep 17 00:00:00 2001 From: Chirs Ruihl Date: Wed, 27 Aug 2025 09:31:59 -0400 Subject: [PATCH 31/31] #21 Skip rpm install of libjwt if source is selected --- slurm/tasks/install.yaml | 8 -------- slurm/tasks/pre_install.yaml | 17 +++++++++++++++++ 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/slurm/tasks/install.yaml b/slurm/tasks/install.yaml index b2c0ce9..382e196 100644 --- a/slurm/tasks/install.yaml +++ b/slurm/tasks/install.yaml @@ -11,14 +11,6 @@ - slurm_install_slurmd - slurm_install_restd -- name: Install required development packages - ansible.builtin.dnf: - name: "{{item}}" - state: present - enablerepo: "{{ slurm_el_repos }}" - loop: "{{ slurm_required_devel_packages }}" - when: ansible_distribution_major_version | int >= 8 - # Check if JWT RPM is installed - name: Check if JWT RPM is installed ansible.builtin.set_fact: diff --git a/slurm/tasks/pre_install.yaml b/slurm/tasks/pre_install.yaml index 9ec3128..e13b9e2 100644 --- a/slurm/tasks/pre_install.yaml +++ b/slurm/tasks/pre_install.yaml @@ -66,6 +66,23 @@ - slurm_install_restapi - slurm_install_restd +- name: Check if jwtlib-devel is required + set_fact: + slurm_required_devel_packages: "{{ slurm_required_devel_packages | difference(['libjwt-devel']) }}" + when: slurm_enable_restd and slurm_build_jwt_source + +- name: Install required development packages + ansible.builtin.dnf: + name: "{{item}}" + state: present + enablerepo: "{{ slurm_el_repos }}" + loop: "{{ slurm_required_devel_packages }}" + when: slurm_source_install + tags: + - slurm + - slurm_install_controller + - slurm_install_slurmd + - name: Add slurm group ansible.builtin.group: name: slurm