diff --git a/etc/kayobe/ansible/maintenance/rocky-97-ofed-upgrade.yml b/etc/kayobe/ansible/maintenance/rocky-97-ofed-upgrade.yml new file mode 100644 index 000000000..063529bc3 --- /dev/null +++ b/etc/kayobe/ansible/maintenance/rocky-97-ofed-upgrade.yml @@ -0,0 +1,104 @@ +--- +# This playbook performs the system upgrade from RockyLinux 9.6 to 9.7 on hosts +# using doca ofed kernel modules and utilities. +# It prevents the install of the dkms toolchain and dkms modules that would be +# used instead or our precompiled modules if a direct `dnf upgrade` was run. +# +# It must be run after new package snapshots have been merged and +# `pulp-repo-sync.yml` and `pulp-repo-publish.yml` have been run. +# Also `kayobe overcloud host configure -t dnf` must have been run for the new +# `doca.repo` to be present (the doca version is in the url) on the mlnx hosts. + +- name: Prepare upgrade from Rocky Linux 9.6 to 9.7 + hosts: mlnx + serial: "{{ lookup('env', 'ANSIBLE_SERIAL') | default(1, true) }}" + gather_facts: true + tags: pre + vars: + # we don't build kernel modules for each version, eg 5.14.0-611.13.1 has been built, + # but not 5.14.0-611.20.1. + doca_kernel_version: "{{ stackhpc_doca_kernel_version_matrix[stackhpc_pulp_repo_rocky_9_minor_version] }}" + tasks: + - name: Assert that hosts are running Rocky Linux 9.6 + ansible.builtin.assert: + that: + - ansible_facts.distribution == 'Rocky' + - ansible_facts.distribution_version == '9.6' + - os_distribution == 'rocky' + fail_msg: >- + This playbook is only designed for Rocky Linux 9.6 hosts. Ensure + that you are limiting it to only run on Rocky Linux 9.6 hosts and + os_distribution is set to rocky. + + - name: Ensure doca kernel repo is up to date + ansible.builtin.dnf: + name: doca-kernel-repo + state: latest + update_cache: true + become: true + + # This is required by mlnx-ofa_kernel, and comes from the doca repository. + # It is already present when doca-ofed is installed, but will be upgraded. + - name: Ensure mlnx-tools is installed + ansible.builtin.dnf: + name: mlnx-tools + state: latest + update_cache: true + become: true + + - name: Ensure appropriate doca-kernel is installed + ansible.builtin.dnf: + name: "doca-kernel-{{ doca_kernel_version }}" + state: latest + disablerepo: doca + become: true + + # doca-ofed 3.2 starts to depend on the dkms modules. It was not the case + # in doca-ofed 2.9.3. + - name: Ensure doca-ofed is not present (upgrading it brings dkms) + ansible.builtin.dnf: + name: doca-ofed + state: absent + autoremove: false + become: true + + - name: Ensure latest doca-ofed-userspace instead of doca-ofed + ansible.builtin.dnf: + name: doca-ofed-userspace + state: latest + become: true + + - name: Upgrade all + ansible.builtin.dnf: + name: "*" + state: latest + become: true + +- name: Fix potential grub config preventing new kernel from being used + ansible.builtin.import_playbook: reset-bls-entries.yml + vars: + reset_bls_hosts: mlnx + +- name: Reboot to apply updates + ansible.builtin.import_playbook: reboot.yml + vars: + reboot_hosts: mlnx + +- name: Confirm the host is upgraded to Rocky Linux 9.7 + hosts: mlnx + tags: post + tasks: + - name: Update distribution facts + ansible.builtin.setup: + filter: "{{ kayobe_ansible_setup_filter }}" + gather_subset: "{{ kayobe_ansible_setup_gather_subset }}" + + # Can fail (eg in multinode) when there are bad entries in grub config + # Fixed by `kayobe playbook run ansible/maintenance/reset-bls-entries.yml` + # and manual reboot + - name: Assert that hosts are now using Rocky Linux 9.7 + ansible.builtin.assert: + that: + - ansible_facts.distribution == 'Rocky' + - ansible_facts.distribution_version == '9.7' + - os_distribution == 'rocky' diff --git a/etc/kayobe/ansible/tools/install-doca.yml b/etc/kayobe/ansible/tools/install-doca.yml index bf353d888..fdf57a5de 100644 --- a/etc/kayobe/ansible/tools/install-doca.yml +++ b/etc/kayobe/ansible/tools/install-doca.yml @@ -3,27 +3,50 @@ become: true hosts: mlnx gather_facts: true + vars: + # we don't build kernel modules for each version, eg 5.14.0-611.13.1 has been built, + # but not 5.14.0-611.20.1 + doca_kernel_version: "{{ stackhpc_doca_kernel_version_matrix[stackhpc_pulp_repo_rocky_9_minor_version] }}" tasks: - - name: Get running kernel - ansible.builtin.command: - cmd: "uname -r" - register: kernel - check_mode: false - - name: Install kernel repo ansible.builtin.dnf: name: doca-kernel-repo state: latest update_cache: true + # not the same as doca_kernel_version: some dots changed to underscore or dash + - name: Discover kernel repo filename + ansible.builtin.shell: | + set -o pipefail + rpm -ql doca-kernel-repo | grep /etc/yum.repos.d/ + register: kernel_repo_filename + changed_when: false + - name: Ensure correct priority for DOCA modules ansible.builtin.lineinfile: line: "priority=-2" insertafter: EOF - path: "/etc/yum.repos.d/doca-kernel-{{ kernel.stdout }}.repo" + path: "{{ kernel_repo_filename.stdout }}" + + # This is required by mlnx-ofa_kernel, and comes from the doca repository. + # It is already present when doca-ofed is installed, but will be upgraded. + - name: Ensure mlnx-tools is installed + ansible.builtin.dnf: + name: mlnx-tools + state: latest + update_cache: true + become: true + + - name: Ensure appropriate doca-kernel is installed + ansible.builtin.dnf: + name: "doca-kernel-{{ doca_kernel_version }}" + state: latest + disablerepo: doca + become: true - - name: Install DOCA OFED + - name: Ensure DOCA OFED userspace is installed ansible.builtin.dnf: - name: doca-ofed + name: + - doca-ofed-userspace state: latest update_cache: true diff --git a/etc/kayobe/ansible/tools/stackhpc-cloud-tests.yml b/etc/kayobe/ansible/tools/stackhpc-cloud-tests.yml index 187e38a97..2d8940a05 100644 --- a/etc/kayobe/ansible/tools/stackhpc-cloud-tests.yml +++ b/etc/kayobe/ansible/tools/stackhpc-cloud-tests.yml @@ -140,9 +140,9 @@ SELINUX_STATE: "{{ sct_selinux_state }}" vars: # Inclusive min - sct_docker_version_min: "24.0.0" + sct_docker_version_min: "27.0.0" # Exclusive max - sct_docker_version_max: "29.0.0" + sct_docker_version_max: "30.0.0" sct_selinux_state: "{{ selinux_state }}" failed_when: host_results.rc not in [0, 1] register: host_results diff --git a/etc/kayobe/ofed.yml b/etc/kayobe/ofed.yml index 7867206f6..6c58b5db9 100644 --- a/etc/kayobe/ofed.yml +++ b/etc/kayobe/ofed.yml @@ -3,7 +3,15 @@ ############################################################################### # DOCA host version -stackhpc_pulp_doca_version: "{{ '2.9.3' if stackhpc_pulp_repo_rocky_9_minor_version == '6' else '2.9.1' }}" +stackhpc_pulp_doca_version_matrix: + "6": 2.9.3 + "7": 3.2.1 +stackhpc_pulp_doca_version: "{{ stackhpc_pulp_doca_version_matrix[stackhpc_pulp_repo_rocky_9_minor_version] | default('2.9.1') }}" + +# Available and tested versions of the pre-compiled doca-ofed kernel modules +stackhpc_doca_kernel_version_matrix: + "6": 5.14.0.570.21.1.el9.6.x86.64 + "7": 5.14.0.611.13.1.el9.7.x86.64 ############################################################################### # Pulp configuration for DOCA OFED @@ -12,7 +20,9 @@ stackhpc_pulp_doca_version: "{{ '2.9.3' if stackhpc_pulp_repo_rocky_9_minor_vers stackhpc_pulp_sync_ofed: "{{ groups['mlnx'] | length > 0 }}" # DOCA Snapshot lookup vars -doca_version_lookup_var: "stackhpc_pulp_repo_doca_{{ stackhpc_pulp_doca_version | replace('.', '_') }}_rhel9_{{ stackhpc_pulp_repo_rocky_9_minor_version }}_version" +doca_rocky_9_minor_dot: "{% if stackhpc_pulp_doca_version is version('3.2.0', '>=') %}9{% else %}9.{{ stackhpc_pulp_repo_rocky_9_minor_version }}{% endif %}" +# eg stackhpc_pulp_repo_doca_2_9_3_rhel9_6_version or stackhpc_pulp_repo_doca_3_2_1_rhel9_version +doca_version_lookup_var: "stackhpc_pulp_repo_doca_{{ stackhpc_pulp_doca_version | replace('.', '_') }}_rhel{{ doca_rocky_9_minor_dot | replace('.', '_') }}_version" doca_modules_version_lookup_var: "stackhpc_pulp_repo_doca_{{ stackhpc_pulp_doca_version | replace('.', '_') }}_rhel9_{{ stackhpc_pulp_repo_rocky_9_minor_version }}_modules_version" # DOCA Snapshot versions. The defaults use the appropriate version from diff --git a/etc/kayobe/pulp-repo-versions.yml b/etc/kayobe/pulp-repo-versions.yml index a27b0bab1..d2961bb8f 100644 --- a/etc/kayobe/pulp-repo-versions.yml +++ b/etc/kayobe/pulp-repo-versions.yml @@ -2,40 +2,42 @@ # This file is autogenerated by Ansible using the following workflow: # https://github.com/stackhpc/stackhpc-release-train/actions/workflows/package-update-kayobe.yml stackhpc_pulp_repo_almalinux_9_proxysql_2_7_version: 20250627T134211 -stackhpc_pulp_repo_centos_stream_9_docker_version: 20250531T002004 -stackhpc_pulp_repo_centos_stream_9_docker_aarch64_version: 20250531T022550 -stackhpc_pulp_repo_centos_stream_9_nfv_openvswitch_version: 20250807T035741 -stackhpc_pulp_repo_centos_stream_9_nfv_openvswitch_aarch64_version: 20250807T031149 +stackhpc_pulp_repo_centos_stream_9_docker_version: 20260116T201448 +stackhpc_pulp_repo_centos_stream_9_docker_aarch64_version: 20260116T212156 +stackhpc_pulp_repo_centos_stream_9_nfv_openvswitch_version: 20260105T210735 +stackhpc_pulp_repo_centos_stream_9_nfv_openvswitch_aarch64_version: 20260105T211710 stackhpc_pulp_repo_centos_stream_9_openstack_epoxy_version: 20250521T021940 stackhpc_pulp_repo_centos_stream_9_openstack_epoxy_aarch64_version: 20250521T015033 stackhpc_pulp_repo_centos_stream_9_opstools_version: 20231213T031318 stackhpc_pulp_repo_centos_stream_9_opstools_aarch64_version: 20240927T073838 -stackhpc_pulp_repo_centos_stream_9_storage_ceph_squid_version: 20250412T024303 -stackhpc_pulp_repo_centos_stream_9_storage_ceph_squid_aarch64_version: 20250412T021837 +stackhpc_pulp_repo_centos_stream_9_storage_ceph_squid_version: 20250731T030732 +stackhpc_pulp_repo_centos_stream_9_storage_ceph_squid_aarch64_version: 20250731T023010 stackhpc_pulp_repo_doca_2_9_1_rhel9_4_version: 20241211T153620 stackhpc_pulp_repo_doca_2_9_1_rhel9_4_modules_version: 20241213T112245 stackhpc_pulp_repo_doca_2_9_1_rhel9_5_version: 20241211T171301 stackhpc_pulp_repo_doca_2_9_1_rhel9_5_modules_version: 20250115T150314 stackhpc_pulp_repo_doca_2_9_3_rhel9_6_version: 20250703T135021 stackhpc_pulp_repo_doca_2_9_3_rhel9_6_modules_version: 20250714T141841 +stackhpc_pulp_repo_doca_3_2_1_rhel9_version: 20251219T132023 +stackhpc_pulp_repo_doca_3_2_1_rhel9_7_modules_version: 20251222T160623 stackhpc_pulp_repo_docker_ce_ubuntu_noble_version: 20250616T155742 -stackhpc_pulp_repo_elrepo_9_version: 20250610T235426 +stackhpc_pulp_repo_elrepo_9_version: 20260117T204853 stackhpc_pulp_repo_elrepo_9_aarch64_version: 20250408T030629 -stackhpc_pulp_repo_epel_9_version: 20250615T000221 -stackhpc_pulp_repo_epel_9_aarch64_version: 20250615T015805 -stackhpc_pulp_repo_grafana_version: 20250615T005738 -stackhpc_pulp_repo_opensearch_2_x_version: 20250430T014638 -stackhpc_pulp_repo_opensearch_dashboards_2_x_version: 20250430T014638 -stackhpc_pulp_repo_rhel9_rabbitmq_erlang_version: 20250718T004955 -stackhpc_pulp_repo_rhel9_rabbitmq_erlang_26_aarch64_version: 20250905T114106 -stackhpc_pulp_repo_rhel9_rabbitmq_erlang_27_aarch64_version: 20250905T114106 -stackhpc_pulp_repo_rhel9_rabbitmq_server_version: 20250708T003546 -stackhpc_pulp_repo_rhel_9_influxdb_version: 20250529T023704 -stackhpc_pulp_repo_rhel_9_influxdb_aarch64_version: 20250529T041909 -stackhpc_pulp_repo_rhel_9_mariadb_10_11_version: 20250523T014203 -stackhpc_pulp_repo_rhel_9_mariadb_10_11_aarch64_version: 20250523T035924 -stackhpc_pulp_repo_rhel_9_treasuredata_5_version: 20250516T002449 -stackhpc_pulp_repo_rhel_9_treasuredata_5_aarch64_version: 20250516T024051 +stackhpc_pulp_repo_epel_9_version: 20260118T205952 +stackhpc_pulp_repo_epel_9_aarch64_version: 20260118T212530 +stackhpc_pulp_repo_grafana_version: 20260117T201921 +stackhpc_pulp_repo_opensearch_2_x_version: 20251106T202313 +stackhpc_pulp_repo_opensearch_dashboards_2_x_version: 20251106T202313 +stackhpc_pulp_repo_rhel9_rabbitmq_erlang_version: 20251130T213625 +stackhpc_pulp_repo_rhel9_rabbitmq_erlang_26_aarch64_version: 20260112T224827 +stackhpc_pulp_repo_rhel9_rabbitmq_erlang_27_aarch64_version: 20260112T224827 +stackhpc_pulp_repo_rhel9_rabbitmq_server_version: 20260102T201700 +stackhpc_pulp_repo_rhel_9_influxdb_version: 20260113T202459 +stackhpc_pulp_repo_rhel_9_influxdb_aarch64_version: 20260112T224827 +stackhpc_pulp_repo_rhel_9_mariadb_10_11_version: 20251105T202159 +stackhpc_pulp_repo_rhel_9_mariadb_10_11_aarch64_version: 20251105T211544 +stackhpc_pulp_repo_rhel_9_treasuredata_5_version: 20251219T202129 +stackhpc_pulp_repo_rhel_9_treasuredata_5_aarch64_version: 20251219T213344 stackhpc_pulp_repo_rocky_9_1_appstream_version: 20231207T013715 stackhpc_pulp_repo_rocky_9_1_baseos_version: 20231206T014015 stackhpc_pulp_repo_rocky_9_1_crb_version: 20231211T120328 @@ -76,8 +78,24 @@ stackhpc_pulp_repo_rocky_9_6_extras_version: 20250726T040613 stackhpc_pulp_repo_rocky_9_6_extras_aarch64_version: 20250726T045704 stackhpc_pulp_repo_rocky_9_6_highavailability_version: 20250605T150141 stackhpc_pulp_repo_rocky_9_6_highavailability_aarch64_version: 20250605T150141 -stackhpc_pulp_repo_rocky_9_sig_security_common_version: 20250222T040303 -stackhpc_pulp_repo_rocky_9_sig_security_common_aarch64_version: 20250222T044743 +stackhpc_pulp_repo_rocky_9_7_appstream_version: 20260117T210133 +stackhpc_pulp_repo_rocky_9_7_appstream_aarch64_version: 20260117T215926 +stackhpc_pulp_repo_rocky_9_7_appstream_source_version: 20260117T211328 +stackhpc_pulp_repo_rocky_9_7_baseos_version: 20260117T212017 +stackhpc_pulp_repo_rocky_9_7_baseos_aarch64_version: 20260117T215926 +stackhpc_pulp_repo_rocky_9_7_baseos_source_version: 20260117T211328 +stackhpc_pulp_repo_rocky_9_7_crb_version: 20260117T210133 +stackhpc_pulp_repo_rocky_9_7_crb_aarch64_version: 20260117T215926 +stackhpc_pulp_repo_rocky_9_7_crb_source_version: 20260117T211328 +stackhpc_pulp_repo_rocky_9_7_extras_version: 20251229T144024 +stackhpc_pulp_repo_rocky_9_7_extras_aarch64_version: 20251229T153210 +stackhpc_pulp_repo_rocky_9_7_extras_source_version: 20251229T150242 +stackhpc_pulp_repo_rocky_9_7_highavailability_version: 20260108T204618 +stackhpc_pulp_repo_rocky_9_7_highavailability_aarch64_version: 20260112T224827 +stackhpc_pulp_repo_rocky_9_7_highavailability_source_version: 20251220T210727 +stackhpc_pulp_repo_rocky_9_sig_security_common_version: 20251108T211425 +stackhpc_pulp_repo_rocky_9_sig_security_common_aarch64_version: 20251109T211404 +stackhpc_pulp_repo_rocky_9_sig_security_common_source_version: 20251203T103807 stackhpc_pulp_repo_ubuntu_cloud_archive_version: 20250620T063939 stackhpc_pulp_repo_ubuntu_noble_security_version: 20250620T113028 stackhpc_pulp_repo_ubuntu_noble_version: 20250620T113028 diff --git a/etc/kayobe/pulp.yml b/etc/kayobe/pulp.yml index 409e58c0d..e96cf9245 100644 --- a/etc/kayobe/pulp.yml +++ b/etc/kayobe/pulp.yml @@ -200,8 +200,8 @@ stackhpc_pulp_distribution_deb_production: >- # Whether to sync Rocky Linux 9 packages. stackhpc_pulp_sync_rocky_9: "{{ os_distribution == 'rocky' }}" -# Rocky 9 minor version number. Supported values: 6. Default is 6 -stackhpc_pulp_repo_rocky_9_minor_version: '6' +# Rocky 9 minor version number. Supported values: 6, 7. Default is 7 +stackhpc_pulp_repo_rocky_9_minor_version: '7' # Rocky 9 Snapshot versions. The defaults use the appropriate version from # pulp-repo-versions.yml for the selected minor release. @@ -382,10 +382,10 @@ stackhpc_pulp_rpm_repos: base_path: "opensearch-dashboards/2.x/yum/" required: "{{ stackhpc_pulp_sync_for_local_container_build | bool and stackhpc_pulp_sync_el_9 | bool }}" - - name: DOCA Online Repo {{ stackhpc_pulp_doca_version }} - RHEL 9.{{ stackhpc_pulp_repo_rocky_9_minor_version }} - url: "{{ stackhpc_release_pulp_content_url }}/doca/{{ stackhpc_pulp_doca_version }}/rhel9.{{ stackhpc_pulp_repo_rocky_9_minor_version }}/x86_64/{{ stackhpc_pulp_repo_rhel9_doca_version }}" - distribution_name: "doca-{{ stackhpc_pulp_doca_version }}-rhel9.{{ stackhpc_pulp_repo_rocky_9_minor_version }}-" - base_path: "doca/{{ stackhpc_pulp_doca_version }}/rhel9.{{ stackhpc_pulp_repo_rocky_9_minor_version }}/x86_64/" + - name: DOCA Online Repo {{ stackhpc_pulp_doca_version }} - RHEL {{ doca_rocky_9_minor_dot }} + url: "{{ stackhpc_release_pulp_content_url }}/doca/{{ stackhpc_pulp_doca_version }}/rhel{{ doca_rocky_9_minor_dot }}/x86_64/{{ stackhpc_pulp_repo_rhel9_doca_version }}" + distribution_name: "doca-{{ stackhpc_pulp_doca_version }}-rhel{{ doca_rocky_9_minor_dot }}-" + base_path: "doca/{{ stackhpc_pulp_doca_version }}/rhel{{ doca_rocky_9_minor_dot }}/x86_64/" required: "{{ stackhpc_pulp_sync_ofed | bool and stackhpc_pulp_sync_el_9 | bool }}" - name: OFED Kernel modules for DOCA {{ stackhpc_pulp_doca_version }} - RHEL 9.{{ stackhpc_pulp_repo_rocky_9_minor_version }} diff --git a/etc/kayobe/stackhpc.yml b/etc/kayobe/stackhpc.yml index 72df1e418..3ece55311 100644 --- a/etc/kayobe/stackhpc.yml +++ b/etc/kayobe/stackhpc.yml @@ -49,7 +49,7 @@ stackhpc_repo_docker_ce_ubuntu_noble_version: "{{ stackhpc_repo_distribution }}" # RPMs # DOCA -stackhpc_repo_rhel9_doca_url: "{{ stackhpc_repo_mirror_url }}/pulp/content/doca/{{ stackhpc_pulp_doca_version }}/rhel9.{{ stackhpc_pulp_repo_rocky_9_minor_version }}/x86_64/{{ stackhpc_repo_rhel9_doca_version }}" +stackhpc_repo_rhel9_doca_url: "{{ stackhpc_repo_mirror_url }}/pulp/content/doca/{{ stackhpc_pulp_doca_version }}/rhel{{ doca_rocky_9_minor_dot }}/x86_64/{{ stackhpc_repo_rhel9_doca_version }}" stackhpc_repo_rhel9_doca_version: "{{ stackhpc_repo_distribution }}" # DOCA Modules diff --git a/releasenotes/notes/rl9.7-c8d033f11097b76b.yaml b/releasenotes/notes/rl9.7-c8d033f11097b76b.yaml new file mode 100644 index 000000000..dcdb765ec --- /dev/null +++ b/releasenotes/notes/rl9.7-c8d033f11097b76b.yaml @@ -0,0 +1,10 @@ +--- +features: + - | + Added support for Rocky Linux 9.7. + - | + 9.7 is now the default release for Rocky Linux. + +upgrade: + - | + The upgrade to DOCA 3.2.1 is required for Rocky Linux 9.7.