From 6398b9c96cbacfe25f6befbc8bbee89517c92bbc Mon Sep 17 00:00:00 2001 From: Owen Jones Date: Fri, 22 May 2026 14:23:15 +0100 Subject: [PATCH 1/3] Syncronise Rocky Repositories We build DOCA-OFED Kernel Modules for both x86_64 and aarch64 at the same time to ensure they're both on the same kernel - we need to keep Rocky repositories for both architectures in sync. for this to ensure we have necessary kernel-devel packages for the target kernel available in both. --- etc/kayobe/pulp-repo-versions.yml | 58 +++++++++++++++---------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/etc/kayobe/pulp-repo-versions.yml b/etc/kayobe/pulp-repo-versions.yml index 37fd46665..e8c89bf29 100644 --- a/etc/kayobe/pulp-repo-versions.yml +++ b/etc/kayobe/pulp-repo-versions.yml @@ -58,24 +58,24 @@ stackhpc_pulp_repo_rhel_9_mariadb_10_11_aarch64_version: 20260204T223146 stackhpc_pulp_repo_rhel_9_mariadb_10_11_version: 20260204T213517 stackhpc_pulp_repo_rhel_9_treasuredata_5_aarch64_version: 20251219T213344 stackhpc_pulp_repo_rhel_9_treasuredata_5_version: 20251219T202129 -stackhpc_pulp_repo_rocky_10_1_appstream_aarch64_version: 20260506T232721 -stackhpc_pulp_repo_rocky_10_1_appstream_source_version: 20260506T230406 -stackhpc_pulp_repo_rocky_10_1_appstream_version: 20260506T223941 -stackhpc_pulp_repo_rocky_10_1_baseos_aarch64_version: 20260506T232721 -stackhpc_pulp_repo_rocky_10_1_baseos_source_version: 20260506T230406 -stackhpc_pulp_repo_rocky_10_1_baseos_version: 20260506T231232 -stackhpc_pulp_repo_rocky_10_1_crb_aarch64_version: 20260506T232721 +stackhpc_pulp_repo_rocky_10_1_appstream_aarch64_version: 20260519T230733 +stackhpc_pulp_repo_rocky_10_1_appstream_source_version: 20260520T231207 +stackhpc_pulp_repo_rocky_10_1_appstream_version: 20260519T222906 +stackhpc_pulp_repo_rocky_10_1_baseos_aarch64_version: 20260519T230733 +stackhpc_pulp_repo_rocky_10_1_baseos_source_version: 20260519T224011 +stackhpc_pulp_repo_rocky_10_1_baseos_version: 20260520T232419 +stackhpc_pulp_repo_rocky_10_1_crb_aarch64_version: 20260519T230733 stackhpc_pulp_repo_rocky_10_1_crb_source_version: 20260428T223954 -stackhpc_pulp_repo_rocky_10_1_crb_version: 20260506T223941 +stackhpc_pulp_repo_rocky_10_1_crb_version: 20260520T225849 stackhpc_pulp_repo_rocky_10_1_extras_aarch64_version: 20260227T002947 -stackhpc_pulp_repo_rocky_10_1_extras_source_version: 20260413T163104 +stackhpc_pulp_repo_rocky_10_1_extras_source_version: 20260508T224634 stackhpc_pulp_repo_rocky_10_1_extras_version: 20260226T235218 -stackhpc_pulp_repo_rocky_10_1_highavailability_aarch64_version: 20260506T232721 -stackhpc_pulp_repo_rocky_10_1_highavailability_source_version: 20260428T223954 -stackhpc_pulp_repo_rocky_10_1_highavailability_version: 20260506T223941 -stackhpc_pulp_repo_rocky_10_1_security_aarch64_version: 20260510T225242 -stackhpc_pulp_repo_rocky_10_1_security_source_version: 20260510T222658 -stackhpc_pulp_repo_rocky_10_1_security_version: 20260510T223302 +stackhpc_pulp_repo_rocky_10_1_highavailability_aarch64_version: 20260508T232552 +stackhpc_pulp_repo_rocky_10_1_highavailability_source_version: 20260508T224634 +stackhpc_pulp_repo_rocky_10_1_highavailability_version: 20260508T224812 +stackhpc_pulp_repo_rocky_10_1_security_aarch64_version: 20260519T230733 +stackhpc_pulp_repo_rocky_10_1_security_source_version: 20260520T231207 +stackhpc_pulp_repo_rocky_10_1_security_version: 20260520T225849 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 @@ -116,24 +116,24 @@ stackhpc_pulp_repo_rocky_9_6_extras_aarch64_version: 20250726T045704 stackhpc_pulp_repo_rocky_9_6_extras_version: 20250726T040613 stackhpc_pulp_repo_rocky_9_6_highavailability_aarch64_version: 20250605T150141 stackhpc_pulp_repo_rocky_9_6_highavailability_version: 20250605T150141 -stackhpc_pulp_repo_rocky_9_7_appstream_aarch64_version: 20260503T222614 -stackhpc_pulp_repo_rocky_9_7_appstream_source_version: 20260506T220234 -stackhpc_pulp_repo_rocky_9_7_appstream_version: 20260506T215314 -stackhpc_pulp_repo_rocky_9_7_baseos_aarch64_version: 20260506T224443 -stackhpc_pulp_repo_rocky_9_7_baseos_source_version: 20260503T221514 -stackhpc_pulp_repo_rocky_9_7_baseos_version: 20260506T222838 -stackhpc_pulp_repo_rocky_9_7_crb_aarch64_version: 20260506T224443 +stackhpc_pulp_repo_rocky_9_7_appstream_aarch64_version: 20260519T222921 +stackhpc_pulp_repo_rocky_9_7_appstream_source_version: 20260519T215441 +stackhpc_pulp_repo_rocky_9_7_appstream_version: 20260520T215442 +stackhpc_pulp_repo_rocky_9_7_baseos_aarch64_version: 20260520T223010 +stackhpc_pulp_repo_rocky_9_7_baseos_source_version: 20260519T215441 +stackhpc_pulp_repo_rocky_9_7_baseos_version: 20260520T223700 +stackhpc_pulp_repo_rocky_9_7_crb_aarch64_version: 20260520T223010 stackhpc_pulp_repo_rocky_9_7_crb_source_version: 20260428T214810 -stackhpc_pulp_repo_rocky_9_7_crb_version: 20260506T215314 +stackhpc_pulp_repo_rocky_9_7_crb_version: 20260519T212648 stackhpc_pulp_repo_rocky_9_7_extras_aarch64_version: 20260226T234714 stackhpc_pulp_repo_rocky_9_7_extras_source_version: 20260226T232039 stackhpc_pulp_repo_rocky_9_7_extras_version: 20260226T231043 -stackhpc_pulp_repo_rocky_9_7_highavailability_aarch64_version: 20260506T224443 -stackhpc_pulp_repo_rocky_9_7_highavailability_source_version: 20260429T221435 -stackhpc_pulp_repo_rocky_9_7_highavailability_version: 20260506T215314 -stackhpc_pulp_repo_rocky_9_7_security_aarch64_version: 20260510T220648 -stackhpc_pulp_repo_rocky_9_7_security_source_version: 20260510T215711 -stackhpc_pulp_repo_rocky_9_7_security_version: 20260510T213653 +stackhpc_pulp_repo_rocky_9_7_highavailability_aarch64_version: 20260514T224159 +stackhpc_pulp_repo_rocky_9_7_highavailability_source_version: 20260507T220441 +stackhpc_pulp_repo_rocky_9_7_highavailability_version: 20260514T220209 +stackhpc_pulp_repo_rocky_9_7_security_aarch64_version: 20260519T222921 +stackhpc_pulp_repo_rocky_9_7_security_source_version: 20260520T222157 +stackhpc_pulp_repo_rocky_9_7_security_version: 20260520T215442 stackhpc_pulp_repo_rocky_9_sig_security_common_aarch64_version: 20260305T225932 stackhpc_pulp_repo_rocky_9_sig_security_common_source_version: 20260305T224636 stackhpc_pulp_repo_rocky_9_sig_security_common_version: 20260305T222525 From 76f92633dae60d39255f084f1c2add16e147ddaa Mon Sep 17 00:00:00 2001 From: Owen Jones Date: Fri, 22 May 2026 13:47:24 +0100 Subject: [PATCH 2/3] Build DOCA-OFED kernel modules for Rocky 10 DOCA OFED support has now been added for Rocky 10 --- .github/workflows/package-build-ofed.yml | 340 ++++-------------- .../maintenance/rocky-97-ofed-upgrade.yml | 2 +- etc/kayobe/ansible/tools/build-ofed-rocky.yml | 2 +- etc/kayobe/ansible/tools/install-doca.yml | 2 +- etc/kayobe/ansible/tools/push-ofed.yml | 12 +- etc/kayobe/dnf.yml | 25 +- .../environments/ci-aio/stackhpc-ci.yml | 1 + etc/kayobe/ofed.yml | 45 ++- etc/kayobe/pulp-repo-versions.yml | 2 + etc/kayobe/pulp.yml | 60 ++-- etc/kayobe/stackhpc.yml | 12 +- .../notes/ofed-rocky-10-29e36d6b1416723b.yaml | 4 + 12 files changed, 167 insertions(+), 340 deletions(-) create mode 100644 releasenotes/notes/ofed-rocky-10-29e36d6b1416723b.yaml diff --git a/.github/workflows/package-build-ofed.yml b/.github/workflows/package-build-ofed.yml index 26b4ced3f..e0791a497 100644 --- a/.github/workflows/package-build-ofed.yml +++ b/.github/workflows/package-build-ofed.yml @@ -7,17 +7,10 @@ on: description: Build Rocky Linux 9 type: boolean default: true - rocky9-aarch64: - description: Build Rocky Linux 9 aarch64 + rocky10: + description: Build Rocky Linux 10 type: boolean default: true - runner_env: - description: Which cloud to run on? - type: choice - default: SMS Lab - options: - - SMS Lab - - Leafcloud secrets: KAYOBE_VAULT_PASSWORD_CI_BUILDER: required: true @@ -33,54 +26,70 @@ env: KAYOBE_ENVIRONMENT: ci-doca-builder KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD_CI_BUILDER }} jobs: - runner-selection: - uses: ./.github/workflows/runner-selector.yml - with: - runner_env: ${{ inputs.runner_env }} - - create-tag: - name: Create a tag to be added to resulting packages + workflow-setup: + name: Setup the workflow if: github.repository == 'stackhpc/stackhpc-kayobe-config' - environment: ${{ inputs.runner_env }} - runs-on: ${{ needs.runner-selection.outputs.runner_name_image_build }} - needs: - - runner-selection + runs-on: ubuntu-latest permissions: {} outputs: ofed_tag: ${{ steps.ofed_tag.outputs.ofed_tag }} + matrix: ${{ steps.set-matrix.outputs.matrix }} steps: - name: Validate inputs run: | if [[ "${{ inputs.rocky9 }}" == "false" && - "${{ inputs.rocky9-aarch64 }}" == "false" + "${{ inputs.rocky10 }}" == "false" ]]; then echo "At least one distribution must be selected" exit 1 fi - if [[ - "${{ inputs.rocky9-aarch64 }}" == "true" && - "${{ inputs.runner_env }}" != "SMS Lab" - ]]; then - echo "aarch64 builds are only supported on SMS Lab" - exit 1 + # Dynamically define job matrix. + # We need a separate matrix entry for each distribution, when the relevant input is true. + # https://stackoverflow.com/questions/65384420/how-do-i-make-a-github-action-matrix-element-conditional + - name: Generate build matrix + id: set-matrix + run: | + output="{'distro': [" + if [[ ${{ inputs.rocky9 }} == 'true' ]]; then + output+="{'name': 'rocky', 'release': '9', 'arch': 'x86_64'}," + output+="{'name': 'rocky', 'release': '9', 'arch': 'aarch64'}," + fi + if [[ ${{ inputs.rocky10 }} == 'true' ]]; then + output+="{'name': 'rocky', 'release': '10', 'arch': 'x86_64'}," + output+="{'name': 'rocky', 'release': '10', 'arch': 'aarch64'}," fi + # remove trailing comma + output="${output%,}" + output+="]}" + echo "matrix=$output" | tee -a "$GITHUB_OUTPUT" - name: Generate OFED tag id: ofed_tag run: | echo "ofed_tag=$(date +%Y%m%dT%H%M%S)" >> $GITHUB_OUTPUT + runner-selection: + name: Select runner + if: github.repository == 'stackhpc/stackhpc-kayobe-config' + permissions: {} + uses: ./.github/workflows/runner-selector.yml + with: + runner_env: SMS Lab + overcloud-ofed-packages: name: Build OFED kernel modules - if: github.repository == 'stackhpc/stackhpc-kayobe-config' && inputs.rocky9 - environment: ${{ inputs.runner_env }} + if: github.repository == 'stackhpc/stackhpc-kayobe-config' + environment: SMS Lab runs-on: ${{ needs.runner-selection.outputs.runner_name_image_build }} needs: - runner-selection - - create-tag + - workflow-setup permissions: {} + strategy: + fail-fast: false + matrix: ${{ fromJson(needs.workflow-setup.outputs.matrix) }} steps: - name: Install Package dependencies run: | @@ -126,21 +135,22 @@ jobs: - name: Output image tag id: image_tag run: | - echo image_tag=$(grep stackhpc_rocky_9_overcloud_host_image_version: etc/kayobe/pulp-host-image-versions.yml | awk '{print $2}') >> $GITHUB_OUTPUT + arch=$([[ "${{ matrix.distro.arch }}" == "aarch64" ]] && echo "_aarch64" || echo "" ) + echo image_tag=$(grep stackhpc_${{ matrix.distro.name }}_${{ matrix.distro.release }}_overcloud_host_image_version${arch}: etc/kayobe/pulp-host-image-versions.yml | awk '{print $2}') >> $GITHUB_OUTPUT working-directory: ${{ github.workspace }}/src/kayobe-config - # Use the image override if set, otherwise use overcloud-os_distribution-os_release-tag - name: Output image name id: image_name run: | - echo image_name=overcloud-rocky-9-${{ steps.image_tag.outputs.image_tag }} >> $GITHUB_OUTPUT + arch=$([[ "${{ matrix.distro.arch }}" == "aarch64" ]] && echo "-aarch64" || echo "" ) + echo image_name=overcloud-${{ matrix.distro.name }}-${{ matrix.distro.release }}${arch}-${{ steps.image_tag.outputs.image_tag }} >> $GITHUB_OUTPUT - name: Generate terraform.tfvars run: | cat << EOF > terraform.tfvars ssh_public_key = "id_rsa.pub" ssh_username = "cloud-user" - aio_vm_name = "skc-ofed-builder" + aio_vm_name = "${{ env.VM_NAME }}" aio_vm_image = "${{ env.VM_IMAGE }}" aio_vm_flavor = "${{ vars.HOST_IMAGE_BUILD_FLAVOR }}" aio_vm_network = "${{ vars.HOST_IMAGE_BUILD_NETWORK }}" @@ -150,8 +160,9 @@ jobs: EOF working-directory: ${{ github.workspace }}/src/kayobe-config/terraform/aio env: + VM_NAME: "skc-ofed-builder-${{ github.run_id }}" VM_IMAGE: ${{ steps.image_name.outputs.image_name }} - VM_TAGS: '["skc-ci-doca-builder", "PR=${{ github.event.number }}"]' + VM_TAGS: '["skc-ci-doca-builder"]' - name: Terraform Plan run: terraform plan @@ -221,7 +232,10 @@ jobs: run: | source venvs/kayobe/bin/activate && source src/kayobe-config/kayobe-env --environment ci-doca-builder && - kayobe control host bootstrap + kayobe control host bootstrap \ + -e os_distribution="${{ matrix.distro.name }}" \ + -e os_release="${{ matrix.distro.release }}" \ + -e kolla_base_arch="${{ matrix.distro.arch }}" - name: Run growroot playbook run: | @@ -236,8 +250,9 @@ jobs: source venvs/kayobe/bin/activate && source src/kayobe-config/kayobe-env --environment ci-doca-builder && kayobe seed host configure --skip-tags network,docker,docker-registry \ - -e os_distribution="rocky" \ - -e os_release="9" + -e os_distribution="${{ matrix.distro.name }}" \ + -e os_release="${{ matrix.distro.release }}" \ + -e kolla_base_arch="${{ matrix.distro.arch }}" env: KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD_CI_BUILDER }} @@ -246,8 +261,9 @@ jobs: source venvs/kayobe/bin/activate && source src/kayobe-config/kayobe-env --environment ci-doca-builder && kayobe seed host command run --become --command "dnf distro-sync --refresh --assumeyes" \ - -e os_distribution="rocky" \ - -e os_release="9" + -e os_distribution="${{ matrix.distro.name }}" \ + -e os_release="${{ matrix.distro.release }}" \ + -e kolla_base_arch="${{ matrix.distro.arch }}" env: KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD_CI_BUILDER }} @@ -256,7 +272,7 @@ jobs: source venvs/kayobe/bin/activate && source src/kayobe-config/kayobe-env --environment ci-doca-builder && kayobe playbook run src/kayobe-config/etc/kayobe/ansible/maintenance/reset-bls-entries.yml \ - -e "reset_bls_host=ofed-builder" + -e reset_bls_host="ofed-builder" env: KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD_CI_BUILDER }} @@ -289,248 +305,14 @@ jobs: source venvs/kayobe/bin/activate && source src/kayobe-config/kayobe-env --environment ci-doca-builder && kayobe playbook run src/kayobe-config/etc/kayobe/ansible/tools/push-ofed.yml \ - -e "ofed_tag=${{ needs.create-tag.outputs.ofed_tag }}" \ - -e os_release="9" - env: - KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD_CI_BUILDER }} - - - name: Destroy - run: terraform destroy -auto-approve - working-directory: ${{ github.workspace }}/src/kayobe-config/terraform/aio - env: - OS_CLOUD: ${{ vars.OS_CLOUD }} - OS_APPLICATION_CREDENTIAL_ID: ${{ secrets.OS_APPLICATION_CREDENTIAL_ID }} - OS_APPLICATION_CREDENTIAL_SECRET: ${{ secrets.OS_APPLICATION_CREDENTIAL_SECRET }} - if: always() - - overcloud-ofed-packages-aarch64: - name: Build aarch64 OFED kernel modules - if: github.repository == 'stackhpc/stackhpc-kayobe-config' && inputs.rocky9-aarch64 - environment: ${{ inputs.runner_env }} - runs-on: ${{ needs.runner-selection.outputs.runner_name_image_build }} - needs: - - runner-selection - - create-tag - permissions: {} - steps: - - name: Install Package dependencies - run: | - sudo apt update && - sudo apt install -y git unzip nodejs python3-pip python3-venv openssh-server openssh-client jq - - - name: Start the SSH service - run: | - sudo /etc/init.d/ssh start - - - name: Checkout - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - with: - path: src/kayobe-config - - - name: Install Kayobe - run: | - mkdir -p venvs && - pushd venvs && - python3 -m venv kayobe && - source kayobe/bin/activate && - pip install -U pip && - pip install -r ../src/kayobe-config/requirements.txt - - - name: Install terraform - uses: hashicorp/setup-terraform@5e8dbf3c6d9deaf4193ca7a8fb23f2ac83bb6c85 # v4.0.0 - - - name: Initialise terraform - run: terraform init - working-directory: ${{ github.workspace }}/src/kayobe-config/terraform/aio - - - name: Generate SSH keypair - run: ssh-keygen -f id_rsa -N '' - working-directory: ${{ github.workspace }}/src/kayobe-config/terraform/aio - - - name: Generate clouds.yaml - run: | - cat << EOF > clouds.yaml - ${{ secrets.CLOUDS_YAML }} - EOF - working-directory: ${{ github.workspace }}/src/kayobe-config/terraform/aio - - - name: Output image tag - id: image_tag - run: | - echo image_tag=$(grep stackhpc_rocky_9_overcloud_host_image_version_aarch64: etc/kayobe/pulp-host-image-versions.yml | awk '{print $2}') >> $GITHUB_OUTPUT - working-directory: ${{ github.workspace }}/src/kayobe-config - - # Use the image override if set, otherwise use overcloud-os_distribution-os_release-tag - - name: Output image name - id: image_name - run: | - echo image_name=overcloud-rocky-9-aarch64-${{ steps.image_tag.outputs.image_tag }} >> $GITHUB_OUTPUT - - - name: Generate terraform.tfvars - run: | - cat << EOF > terraform.tfvars - ssh_public_key = "id_rsa.pub" - ssh_username = "cloud-user" - aio_vm_name = "skc-ofed-builder-arm64" - aio_vm_image = "${{ env.VM_IMAGE }}" - aio_vm_flavor = "${{ vars.HOST_IMAGE_BUILD_FLAVOR }}" - aio_vm_network = "${{ vars.HOST_IMAGE_BUILD_NETWORK }}" - aio_vm_subnet = "${{ vars.HOST_IMAGE_BUILD_SUBNET }}" - aio_vm_interface = "ens3" - aio_vm_tags = ${{ env.VM_TAGS }} - EOF - working-directory: ${{ github.workspace }}/src/kayobe-config/terraform/aio - env: - VM_IMAGE: ${{ steps.image_name.outputs.image_name }} - VM_TAGS: '["skc-ci-doca-builder", "PR=${{ github.event.number }}"]' - - - name: Terraform Plan - run: terraform plan - working-directory: ${{ github.workspace }}/src/kayobe-config/terraform/aio - env: - OS_CLOUD: ${{ vars.OS_CLOUD }} - OS_APPLICATION_CREDENTIAL_ID: ${{ secrets.OS_APPLICATION_CREDENTIAL_ID }} - OS_APPLICATION_CREDENTIAL_SECRET: ${{ secrets.OS_APPLICATION_CREDENTIAL_SECRET }} - - - name: Terraform Apply - run: | - for attempt in $(seq 5); do - if terraform apply -auto-approve; then - echo "Created infrastructure on attempt $attempt" - exit 0 - fi - echo "Failed to create infrastructure on attempt $attempt" - sleep 10 - terraform destroy -auto-approve - sleep 60 - done - echo "Failed to create infrastructure after $attempt attempts" - exit 1 - working-directory: ${{ github.workspace }}/src/kayobe-config/terraform/aio - env: - OS_CLOUD: ${{ vars.OS_CLOUD }} - OS_APPLICATION_CREDENTIAL_ID: ${{ secrets.OS_APPLICATION_CREDENTIAL_ID }} - OS_APPLICATION_CREDENTIAL_SECRET: ${{ secrets.OS_APPLICATION_CREDENTIAL_SECRET }} - - - name: Get Terraform outputs - id: tf_outputs - run: | - terraform output -json - working-directory: ${{ github.workspace }}/src/kayobe-config/terraform/aio - - - name: Write Terraform outputs - run: | - cat << EOF > src/kayobe-config/etc/kayobe/environments/ci-doca-builder/tf-outputs.yml - ${{ steps.tf_outputs.outputs.stdout }} - EOF - - - name: Write Terraform network config - run: | - cat << EOF > src/kayobe-config/etc/kayobe/environments/ci-doca-builder/tf-network-allocation.yml - --- - aio_ips: - builder: "{{ access_ip_v4.value }}" - EOF - - - name: Write Terraform network interface config - run: | - mkdir -p src/kayobe-config/etc/kayobe/environments/$KAYOBE_ENVIRONMENT/inventory/group_vars/seed - rm -f src/kayobe-config/etc/kayobe/environments/$KAYOBE_ENVIRONMENT/inventory/group_vars/seed/network-interfaces - cat << EOF > src/kayobe-config/etc/kayobe/environments/$KAYOBE_ENVIRONMENT/inventory/group_vars/seed/network-interfaces - admin_interface: "{{ access_interface.value }}" - aio_interface: "{{ access_interface.value }}" - EOF - - - name: Manage SSH keys - run: | - mkdir -p ~/.ssh - touch ~/.ssh/authorized_keys - cat src/kayobe-config/terraform/aio/id_rsa.pub >> ~/.ssh/authorized_keys - cp src/kayobe-config/terraform/aio/id_rsa* ~/.ssh/ - - - name: Bootstrap the control host - run: | - source venvs/kayobe/bin/activate && - source src/kayobe-config/kayobe-env --environment ci-doca-builder && - kayobe control host bootstrap - - - name: Run growroot playbook - run: | - source venvs/kayobe/bin/activate && - source src/kayobe-config/kayobe-env --environment ci-doca-builder && - kayobe playbook run src/kayobe-config/etc/kayobe/ansible/tools/growroot.yml - env: - KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD_CI_BUILDER }} - - - name: Configure the seed host (Builder VM) - run: | - source venvs/kayobe/bin/activate && - source src/kayobe-config/kayobe-env --environment ci-doca-builder && - kayobe seed host configure --skip-tags network,docker,docker-registry \ - -e os_distribution="rocky" \ - -e os_release="9" \ - -e kolla_base_arch="aarch64" - env: - KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD_CI_BUILDER }} - - - name: Run a distro-sync - run: | - source venvs/kayobe/bin/activate && - source src/kayobe-config/kayobe-env --environment ci-doca-builder && - kayobe seed host command run --become --command "dnf distro-sync --refresh --assumeyes" \ - -e os_distribution="rocky" \ - -e os_release="9" \ - -e kolla_base_arch="aarch64" - env: - KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD_CI_BUILDER }} - - - name: Reset BLS entries on the seed host - run: | - source venvs/kayobe/bin/activate && - source src/kayobe-config/kayobe-env --environment ci-doca-builder && - kayobe playbook run src/kayobe-config/etc/kayobe/ansible/maintenance/reset-bls-entries.yml \ - -e "reset_bls_host=ofed-builder" - env: - KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD_CI_BUILDER }} - - - name: Disable noexec in /var/tmp - run: | - source venvs/kayobe/bin/activate && - source src/kayobe-config/kayobe-env --environment ci-doca-builder && - kayobe seed host command run --become --command "sed -i 's/noexec,//g' /etc/fstab" - env: - KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD_CI_BUILDER }} - - - name: Reboot to apply the kernel update - run: | - source venvs/kayobe/bin/activate && - source src/kayobe-config/kayobe-env --environment ci-doca-builder && - kayobe playbook run src/kayobe-config/etc/kayobe/ansible/maintenance/reboot.yml - env: - KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD_CI_BUILDER }} - - - name: Run OFED builder playbook - run: | - source venvs/kayobe/bin/activate && - source src/kayobe-config/kayobe-env --environment ci-doca-builder && - kayobe playbook run src/kayobe-config/etc/kayobe/ansible/tools/build-ofed-rocky.yml \ - -e kolla_base_arch="aarch64" - env: - KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD_CI_BUILDER }} - - - name: Run OFED upload playbook - run: | - source venvs/kayobe/bin/activate && - source src/kayobe-config/kayobe-env --environment ci-doca-builder && - kayobe playbook run src/kayobe-config/etc/kayobe/ansible/tools/push-ofed.yml \ - -e "ofed_tag=${{ needs.create-tag.outputs.ofed_tag }}" \ - -e os_release="9" - -e kolla_base_arch="aarch64" + -e ofed_tag="${{ needs.workflow-setup.outputs.ofed_tag }}" \ + -e os_release="${{ matrix.distro.release }}" \ + -e os_arch="${{ matrix.distro.arch }}" env: KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD_CI_BUILDER }} - name: Destroy - run: terraform destroy -auto-approve + run: terraform destroy -auto-approve -lock-timeout=300s working-directory: ${{ github.workspace }}/src/kayobe-config/terraform/aio env: OS_CLOUD: ${{ vars.OS_CLOUD }} diff --git a/etc/kayobe/ansible/maintenance/rocky-97-ofed-upgrade.yml b/etc/kayobe/ansible/maintenance/rocky-97-ofed-upgrade.yml index 0ad575a4f..259ab8f29 100644 --- a/etc/kayobe/ansible/maintenance/rocky-97-ofed-upgrade.yml +++ b/etc/kayobe/ansible/maintenance/rocky-97-ofed-upgrade.yml @@ -18,7 +18,7 @@ # 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_arch: "{{ 'x86.64' if ansible_facts.architecture == 'x86_64' else ansible_facts.architecture }}" - doca_kernel_version: "{{ stackhpc_doca_kernel_version_matrix[stackhpc_pulp_repo_rocky_9_minor_version | string] }}.{{ doca_kernel_arch }}" + doca_kernel_version: "{{ stackhpc_doca_kernel_version_matrix['9.7'] }}.{{ doca_kernel_arch }}" tasks: - name: Assert that hosts are running Rocky Linux 9.6 ansible.builtin.assert: diff --git a/etc/kayobe/ansible/tools/build-ofed-rocky.yml b/etc/kayobe/ansible/tools/build-ofed-rocky.yml index 343183078..de2b299e9 100644 --- a/etc/kayobe/ansible/tools/build-ofed-rocky.yml +++ b/etc/kayobe/ansible/tools/build-ofed-rocky.yml @@ -12,7 +12,7 @@ changed_when: false check_mode: true register: result - failed_when: result.found + failed_when: result.found > 0 - name: Install package dependencies ansible.builtin.dnf: diff --git a/etc/kayobe/ansible/tools/install-doca.yml b/etc/kayobe/ansible/tools/install-doca.yml index 987a0f8f3..64cbb37ae 100644 --- a/etc/kayobe/ansible/tools/install-doca.yml +++ b/etc/kayobe/ansible/tools/install-doca.yml @@ -7,7 +7,7 @@ # 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_arch: "{{ 'x86.64' if ansible_facts.architecture == 'x86_64' else ansible_facts.architecture }}" - doca_kernel_version: "{{ stackhpc_doca_kernel_version_matrix[stackhpc_pulp_repo_rocky_9_minor_version | string] }}.{{ doca_kernel_arch }}" + doca_kernel_version: "{{ stackhpc_doca_kernel_version_matrix[ansible_facts.distribution_version] }}.{{ doca_kernel_arch }}" tasks: - name: Install kernel repo ansible.builtin.dnf: diff --git a/etc/kayobe/ansible/tools/push-ofed.yml b/etc/kayobe/ansible/tools/push-ofed.yml index 01998240f..761e757f6 100644 --- a/etc/kayobe/ansible/tools/push-ofed.yml +++ b/etc/kayobe/ansible/tools/push-ofed.yml @@ -7,13 +7,13 @@ tasks: - name: Get OFED module repo ansible.builtin.set_fact: - doca_modules_repos: "{{ stackhpc_pulp_rpm_repos | selectattr('name', 'search', 'OFED') | selectattr('base_path', 'search', '/' ~ kolla_base_arch ~ '/') | list }}" + doca_modules_repos: "{{ stackhpc_pulp_rpm_repos | selectattr('name', 'search', 'OFED') | selectattr('base_path', 'search', '/rhel' ~ os_release) | selectattr('base_path', 'search', '/' ~ os_arch ~ '/') | list }}" - name: Assert OFED module repo is unique ansible.builtin.assert: that: - doca_modules_repos | length == 1 - fail_msg: "Expected exactly one OFED module repo for {{ kolla_base_arch }}" + fail_msg: "Expected exactly one OFED module repo for {{ os_arch }}" - name: Get OFED module repo variables ansible.builtin.set_fact: @@ -46,7 +46,10 @@ password: "{{ stackhpc_release_pulp_password }}" name: "{{ doca_modules_repo_name }}" state: present - retries: "{{ pulp_timeout_retries | default(3) }}" + register: repository + until: repository is success + retries: "{{ pulp_timeout_retries | default(3) | int }}" + delay: "{{ pulp_delay | default(5) | int }}" - name: Upload OFED RPMs to Pulp pulp.squeezer.rpm_package: @@ -59,6 +62,9 @@ state: present with_items: "{{ doca_kernel_repo.stdout_lines }}" register: package + until: package is success + retries: "{{ pulp_timeout_retries | default(3) | int }}" + delay: "{{ pulp_delay | default(5) | int }}" - name: Create Pulp publication for OFED pulp.squeezer.rpm_publication: diff --git a/etc/kayobe/dnf.yml b/etc/kayobe/dnf.yml index 1f67f2685..df43e0b0c 100644 --- a/etc/kayobe/dnf.yml +++ b/etc/kayobe/dnf.yml @@ -55,7 +55,7 @@ stackhpc_dnf_repos: dnf_custom_repos_doca_rocky_9: doca: baseurl: "{{ stackhpc_repo_rhel9_doca_url }}" - description: "DOCA Online Repo {{ stackhpc_pulp_doca_version }} - RHEL $releasever" + description: "DOCA Online Repo {{ stackhpc_pulp_rocky_9_doca_version }} - RHEL $releasever" enabled: "{{ dnf_enable_doca | bool | default(false) }}" priority: -1 file: doca @@ -64,7 +64,7 @@ dnf_custom_repos_doca_rocky_9: password: "{{ stackhpc_repo_mirror_password | default(omit, true) }}" doca-modules: baseurl: "{{ stackhpc_repo_rhel9_doca_modules_url }}" - description: "OFED Kernel module repository for DOCA {{ stackhpc_pulp_doca_version }} - RHEL $releasever" + description: "OFED Kernel module repository for DOCA {{ stackhpc_pulp_rocky_9_doca_version }} - RHEL $releasever" enabled: "{{ dnf_enable_doca_modules | bool | default(false) }}" priority: -1 file: doca @@ -75,23 +75,22 @@ dnf_custom_repos_doca_rocky_9: dnf_custom_repos_doca_rocky_10: doca: baseurl: "{{ stackhpc_repo_rhel10_doca_url }}" - description: "DOCA Online Repo {{ stackhpc_pulp_doca_version }} - RHEL $releasever" + description: "DOCA Online Repo {{ stackhpc_pulp_rocky_10_doca_version }} - RHEL $releasever" enabled: "{{ dnf_enable_doca | bool | default(false) }}" priority: -1 file: doca gpgcheck: no username: "{{ stackhpc_repo_mirror_username | default(omit, true) }}" password: "{{ stackhpc_repo_mirror_password | default(omit, true) }}" - # TODO(owenjones): update this once repo for Rocky 10 has been created in Pulp - # doca-modules: - # baseurl: "{{ stackhpc_repo_rhel9_doca_modules_url }}" - # description: "OFED Kernel module repository for DOCA {{ stackhpc_pulp_doca_version }} - RHEL $releasever" - # enabled: "{{ dnf_enable_doca_modules | bool | default(false) }}" - # priority: -1 - # file: doca - # gpgcheck: no - # username: "{{ stackhpc_repo_mirror_username | default(omit, true) }}" - # password: "{{ stackhpc_repo_mirror_password | default(omit, true) }}" + doca-modules: + baseurl: "{{ stackhpc_repo_rhel10_doca_modules_url }}" + description: "OFED Kernel module repository for DOCA {{ stackhpc_pulp_rocky_10_doca_version }} - RHEL $releasever" + enabled: "{{ dnf_enable_doca_modules | bool | default(false) }}" + priority: -1 + file: doca + gpgcheck: no + username: "{{ stackhpc_repo_mirror_username | default(omit, true) }}" + password: "{{ stackhpc_repo_mirror_password | default(omit, true) }}" # Custom repositories shared between all RHEL 9/10 derivatives. dnf_custom_repos_el9: diff --git a/etc/kayobe/environments/ci-aio/stackhpc-ci.yml b/etc/kayobe/environments/ci-aio/stackhpc-ci.yml index c894d5afe..6efb84cd7 100644 --- a/etc/kayobe/environments/ci-aio/stackhpc-ci.yml +++ b/etc/kayobe/environments/ci-aio/stackhpc-ci.yml @@ -41,6 +41,7 @@ stackhpc_repo_rhel_10_mariadb_10_11_version: "{{ stackhpc_pulp_repo_multiarch_rh stackhpc_repo_rhel_9_influxdb_version: "{{ stackhpc_pulp_repo_multiarch_rhel_9_influxdb_version }}" stackhpc_repo_rhel_9_mariadb_10_11_version: "{{ stackhpc_pulp_repo_multiarch_rhel_9_mariadb_10_11_version }}" stackhpc_repo_rhel_9_treasuredata_5_version: "{{ stackhpc_pulp_repo_multiarch_rhel_9_treasuredata_5_version }}" +stackhpc_repo_rhel10_doca_modules_version: "{{ stackhpc_pulp_repo_rhel10_doca_modules_version }}" stackhpc_repo_rhel10_doca_version: "{{ stackhpc_pulp_repo_rhel10_doca_version }}" stackhpc_repo_rhel9_doca_modules_version: "{{ stackhpc_pulp_repo_rhel9_doca_modules_version }}" stackhpc_repo_rhel9_doca_version: "{{ stackhpc_pulp_repo_rhel9_doca_version }}" diff --git a/etc/kayobe/ofed.yml b/etc/kayobe/ofed.yml index 90a8b67fb..6564e3150 100644 --- a/etc/kayobe/ofed.yml +++ b/etc/kayobe/ofed.yml @@ -4,14 +4,21 @@ ############################################################################### # DOCA host version stackhpc_pulp_doca_version_matrix: - "6": 2.9.3 - "7": 3.2.2 -stackhpc_pulp_doca_version: "{{ stackhpc_pulp_doca_version_matrix[stackhpc_pulp_repo_rocky_9_minor_version | string] | default('2.9.1') }}" + "9.6": '2.9.3' + "9.7": '3.2.2' + "10.1": '3.2.2' + +doca_rocky_9_release: 9.{{ stackhpc_pulp_repo_rocky_9_minor_version | string }} +doca_rocky_10_release: 10.{{stackhpc_pulp_repo_rocky_10_minor_version | string }} + +stackhpc_pulp_rocky_9_doca_version: "{{ stackhpc_pulp_doca_version_matrix[doca_rocky_9_release] | default('2.9.3') }}" +stackhpc_pulp_rocky_10_doca_version: "{{ stackhpc_pulp_doca_version_matrix[doca_rocky_10_release] | default('3.2.2') }}" # 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 - "7": 5.14.0.611.41.1.el9.7 + "9.6": 5.14.0.570.21.1.el9.6 + "9.7": 5.14.0.611.41.1.el9.7 + "10.1": 6.12.0.124.55.1.el10.1 ############################################################################### # Pulp configuration for DOCA OFED @@ -20,19 +27,29 @@ stackhpc_doca_kernel_version_matrix: stackhpc_pulp_sync_ofed: "{{ groups['mlnx'] | length > 0 }}" # DOCA Snapshot lookup vars -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 %}" +doca_rocky_9_minor_dot: "{% if stackhpc_pulp_rocky_9_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_2_rhel9_version -doca_version_lookup_var: "stackhpc_pulp_repo_doca_{{ stackhpc_pulp_doca_version | replace('.', '_') }}_rhel{{ doca_rocky_9_minor_dot | replace('.', '_') }}_version" -doca_aarch64_version_lookup_var: "stackhpc_pulp_repo_doca_{{ stackhpc_pulp_doca_version | replace('.', '_') }}_rhel{{ doca_rocky_9_minor_dot | replace('.', '_') }}_aarch64_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_modules_aarch64_version_lookup_var: "stackhpc_pulp_repo_doca_{{ stackhpc_pulp_doca_version | replace('.', '_') }}_rhel9_{{ stackhpc_pulp_repo_rocky_9_minor_version }}_modules_aarch64_version" +doca_rocky_9_version_lookup_var: "stackhpc_pulp_repo_doca_{{ stackhpc_pulp_rocky_9_doca_version | replace('.', '_') }}_rhel{{ doca_rocky_9_minor_dot | replace('.', '_') }}_version" +doca_rocky_9_aarch64_version_lookup_var: "stackhpc_pulp_repo_doca_{{ stackhpc_pulp_rocky_9_doca_version | replace('.', '_') }}_rhel{{ doca_rocky_9_minor_dot | replace('.', '_') }}_aarch64_version" +doca_rocky_9_modules_version_lookup_var: "stackhpc_pulp_repo_doca_{{ stackhpc_pulp_rocky_9_doca_version | replace('.', '_') }}_rhel9_{{ stackhpc_pulp_repo_rocky_9_minor_version }}_modules_version" +doca_rocky_9_modules_aarch64_version_lookup_var: "stackhpc_pulp_repo_doca_{{ stackhpc_pulp_rocky_9_doca_version | replace('.', '_') }}_rhel9_{{ stackhpc_pulp_repo_rocky_9_minor_version }}_modules_aarch64_version" + +doca_rocky_10_version_lookup_var: "stackhpc_pulp_repo_doca_{{ stackhpc_pulp_rocky_10_doca_version | replace('.', '_') }}_rhel10_x86_64_version" +doca_rocky_10_aarch64_version_lookup_var: "stackhpc_pulp_repo_doca_{{ stackhpc_pulp_rocky_10_doca_version | replace('.', '_') }}_rhel10_aarch64_version" +doca_rocky_10_modules_version_lookup_var: "stackhpc_pulp_repo_doca_{{ stackhpc_pulp_rocky_10_doca_version | replace('.', '_') }}_rhel10_modules_version" +doca_rocky_10_modules_aarch64_version_lookup_var: "stackhpc_pulp_repo_doca_{{ stackhpc_pulp_rocky_10_doca_version | replace('.', '_') }}_rhel10_modules_aarch64_version" # DOCA Snapshot versions. The defaults use the appropriate version from # pulp-repo-versions.yml -stackhpc_pulp_repo_rhel9_doca_version: "{{ lookup('vars', doca_version_lookup_var) }}" -stackhpc_pulp_repo_rhel9_doca_aarch64_version: "{{ lookup('vars', doca_aarch64_version_lookup_var, default=stackhpc_pulp_repo_rhel9_doca_version) }}" -stackhpc_pulp_repo_rhel9_doca_modules_version: "{{ lookup('vars', doca_modules_version_lookup_var) }}" -stackhpc_pulp_repo_rhel9_doca_modules_aarch64_version: "{{ lookup('vars', doca_modules_aarch64_version_lookup_var) }}" +stackhpc_pulp_repo_rhel9_doca_version: "{{ lookup('vars', doca_rocky_9_version_lookup_var) }}" +stackhpc_pulp_repo_rhel9_doca_aarch64_version: "{{ lookup('vars', doca_rocky_9_aarch64_version_lookup_var, default=stackhpc_pulp_repo_rhel9_doca_version) }}" +stackhpc_pulp_repo_rhel9_doca_modules_version: "{{ lookup('vars', doca_rocky_9_modules_version_lookup_var) }}" +stackhpc_pulp_repo_rhel9_doca_modules_aarch64_version: "{{ lookup('vars', doca_rocky_9_modules_aarch64_version_lookup_var) }}" + +stackhpc_pulp_repo_rhel10_doca_version: "{{ lookup('vars', doca_rocky_10_version_lookup_var) }}" +stackhpc_pulp_repo_rhel10_doca_aarch64_version: "{{ lookup('vars', doca_rocky_10_aarch64_version_lookup_var, default=stackhpc_pulp_repo_rhel10_doca_version) }}" +stackhpc_pulp_repo_rhel10_doca_modules_version: "{{ lookup('vars', doca_rocky_10_modules_version_lookup_var) }}" +stackhpc_pulp_repo_rhel10_doca_modules_aarch64_version: "{{ lookup('vars', doca_rocky_10_modules_aarch64_version_lookup_var) }}" ############################################################################### # Dummy variable to allow Ansible to accept this file. diff --git a/etc/kayobe/pulp-repo-versions.yml b/etc/kayobe/pulp-repo-versions.yml index e8c89bf29..0f3529f56 100644 --- a/etc/kayobe/pulp-repo-versions.yml +++ b/etc/kayobe/pulp-repo-versions.yml @@ -28,6 +28,8 @@ stackhpc_pulp_repo_doca_2_9_1_rhel9_5_modules_version: 20250115T150314 stackhpc_pulp_repo_doca_2_9_1_rhel9_5_version: 20241211T171301 stackhpc_pulp_repo_doca_2_9_3_rhel9_6_modules_version: 20250714T141841 stackhpc_pulp_repo_doca_2_9_3_rhel9_6_version: 20250703T135021 +stackhpc_pulp_repo_doca_3_2_2_rhel10_modules_aarch64_version: 20260513T103056 +stackhpc_pulp_repo_doca_3_2_2_rhel10_modules_version: 20260513T103056 stackhpc_pulp_repo_doca_3_2_2_rhel10_aarch64_version: 20260326T091359 stackhpc_pulp_repo_doca_3_2_2_rhel10_x86_64_version: 20260326T091359 stackhpc_pulp_repo_doca_3_2_2_rhel9_7_modules_aarch64_version: 20260424T151043 diff --git a/etc/kayobe/pulp.yml b/etc/kayobe/pulp.yml index e266a9544..f6ba8a800 100644 --- a/etc/kayobe/pulp.yml +++ b/etc/kayobe/pulp.yml @@ -571,28 +571,28 @@ stackhpc_pulp_rpm_repos: base_path: "mariadb-10.11/yum/rhel/9/aarch64/" required: "{{ stackhpc_pulp_sync_for_local_container_build | bool and stackhpc_pulp_sync_el_9 | bool and 'aarch64' in stackhpc_pulp_rpm_architectures }}" - - 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/" + - name: DOCA Online Repo {{ stackhpc_pulp_rocky_9_doca_version }} - RHEL {{ doca_rocky_9_minor_dot }} + url: "{{ stackhpc_release_pulp_content_url }}/doca/{{ stackhpc_pulp_rocky_9_doca_version }}/rhel{{ doca_rocky_9_minor_dot }}/x86_64/{{ stackhpc_pulp_repo_rhel9_doca_version }}" + distribution_name: "doca-{{ stackhpc_pulp_rocky_9_doca_version }}-rhel{{ doca_rocky_9_minor_dot }}-" + base_path: "doca/{{ stackhpc_pulp_rocky_9_doca_version }}/rhel{{ doca_rocky_9_minor_dot }}/x86_64/" required: "{{ stackhpc_pulp_sync_ofed | bool and stackhpc_pulp_sync_el_9 | bool and 'x86_64' in stackhpc_pulp_rpm_architectures }}" - - name: DOCA Online Repo {{ stackhpc_pulp_doca_version }} - RHEL {{ doca_rocky_9_minor_dot }} aarch64 - url: "{{ stackhpc_release_pulp_content_url }}/doca/{{ stackhpc_pulp_doca_version }}/rhel{{ doca_rocky_9_minor_dot }}/aarch64/{{ stackhpc_pulp_repo_rhel9_doca_aarch64_version }}" - distribution_name: "doca-{{ stackhpc_pulp_doca_version }}-rhel{{ doca_rocky_9_minor_dot }}-aarch64-" - base_path: "doca/{{ stackhpc_pulp_doca_version }}/rhel{{ doca_rocky_9_minor_dot }}/aarch64/" + - name: DOCA Online Repo {{ stackhpc_pulp_rocky_9_doca_version }} - RHEL {{ doca_rocky_9_minor_dot }} aarch64 + url: "{{ stackhpc_release_pulp_content_url }}/doca/{{ stackhpc_pulp_rocky_9_doca_version }}/rhel{{ doca_rocky_9_minor_dot }}/aarch64/{{ stackhpc_pulp_repo_rhel9_doca_aarch64_version }}" + distribution_name: "doca-{{ stackhpc_pulp_rocky_9_doca_version }}-rhel{{ doca_rocky_9_minor_dot }}-aarch64-" + base_path: "doca/{{ stackhpc_pulp_rocky_9_doca_version }}/rhel{{ doca_rocky_9_minor_dot }}/aarch64/" required: "{{ stackhpc_pulp_sync_ofed | bool and stackhpc_pulp_sync_el_9 | bool and 'aarch64' in stackhpc_pulp_rpm_architectures }}" - - name: OFED Kernel modules for DOCA {{ stackhpc_pulp_doca_version }} - RHEL 9.{{ stackhpc_pulp_repo_rocky_9_minor_version }} - url: "{{ stackhpc_release_pulp_content_url }}/doca-modules/{{ stackhpc_pulp_doca_version }}/rhel9.{{ stackhpc_pulp_repo_rocky_9_minor_version }}/x86_64/{{ stackhpc_pulp_repo_rhel9_doca_modules_version }}" - distribution_name: "doca-modules-{{ stackhpc_pulp_doca_version }}-rhel9.{{ stackhpc_pulp_repo_rocky_9_minor_version }}-" - base_path: "doca-modules/{{ stackhpc_pulp_doca_version }}/rhel9.{{ stackhpc_pulp_repo_rocky_9_minor_version }}/x86_64/" + - name: OFED Kernel modules for DOCA {{ stackhpc_pulp_rocky_9_doca_version }} - RHEL 9.{{ stackhpc_pulp_repo_rocky_9_minor_version }} + url: "{{ stackhpc_release_pulp_content_url }}/doca-modules/{{ stackhpc_pulp_rocky_9_doca_version }}/rhel9.{{ stackhpc_pulp_repo_rocky_9_minor_version }}/x86_64/{{ stackhpc_pulp_repo_rhel9_doca_modules_version }}" + distribution_name: "doca-modules-{{ stackhpc_pulp_rocky_9_doca_version }}-rhel9.{{ stackhpc_pulp_repo_rocky_9_minor_version }}-" + base_path: "doca-modules/{{ stackhpc_pulp_rocky_9_doca_version }}/rhel9.{{ stackhpc_pulp_repo_rocky_9_minor_version }}/x86_64/" required: "{{ stackhpc_pulp_sync_ofed | bool and stackhpc_pulp_sync_el_9 | bool and 'x86_64' in stackhpc_pulp_rpm_architectures }}" - - name: OFED Kernel modules for DOCA {{ stackhpc_pulp_doca_version }} - RHEL 9.{{ stackhpc_pulp_repo_rocky_9_minor_version }} aarch64 - url: "{{ stackhpc_release_pulp_content_url }}/doca-modules/{{ stackhpc_pulp_doca_version }}/rhel9.{{ stackhpc_pulp_repo_rocky_9_minor_version }}/aarch64/{{ stackhpc_pulp_repo_rhel9_doca_modules_aarch64_version }}" - distribution_name: "doca-modules-{{ stackhpc_pulp_doca_version }}-rhel9.{{ stackhpc_pulp_repo_rocky_9_minor_version }}-aarch64-" - base_path: "doca-modules/{{ stackhpc_pulp_doca_version }}/rhel9.{{ stackhpc_pulp_repo_rocky_9_minor_version }}/aarch64/" + - name: OFED Kernel modules for DOCA {{ stackhpc_pulp_rocky_9_doca_version }} - RHEL 9.{{ stackhpc_pulp_repo_rocky_9_minor_version }} aarch64 + url: "{{ stackhpc_release_pulp_content_url }}/doca-modules/{{ stackhpc_pulp_rocky_9_doca_version }}/rhel9.{{ stackhpc_pulp_repo_rocky_9_minor_version }}/aarch64/{{ stackhpc_pulp_repo_rhel9_doca_modules_aarch64_version }}" + distribution_name: "doca-modules-{{ stackhpc_pulp_rocky_9_doca_version }}-rhel9.{{ stackhpc_pulp_repo_rocky_9_minor_version }}-aarch64-" + base_path: "doca-modules/{{ stackhpc_pulp_rocky_9_doca_version }}/rhel9.{{ stackhpc_pulp_repo_rocky_9_minor_version }}/aarch64/" required: "{{ stackhpc_pulp_sync_ofed | bool and stackhpc_pulp_sync_el_9 | bool and 'aarch64' in stackhpc_pulp_rpm_architectures }}" # Base Rocky 10 repositories @@ -774,18 +774,30 @@ stackhpc_pulp_rpm_repos: base_path: "mariadb-10.11/yum/rhel/10/aarch64/" required: "{{ stackhpc_pulp_sync_for_local_container_build | bool and stackhpc_pulp_sync_el_10 | bool and 'aarch64' in stackhpc_pulp_rpm_architectures }}" - - name: DOCA Online Repo 3.2.2 - RHEL 10 - url: "{{ stackhpc_release_pulp_content_url }}/doca/3.2.2/rhel10/x86_64/{{ stackhpc_pulp_repo_doca_3_2_2_rhel10_x86_64_version }}" - distribution_name: "doca-3.2.2-rhel10-" - base_path: "doca/3.2.2/rhel10/x86_64/" + - name: DOCA Online Repo {{ stackhpc_pulp_rocky_10_doca_version }} - RHEL 10 + url: "{{ stackhpc_release_pulp_content_url }}/doca/{{ stackhpc_pulp_rocky_10_doca_version }}/rhel10/x86_64/{{ stackhpc_pulp_repo_rhel10_doca_version }}" + distribution_name: "doca-{{ stackhpc_pulp_rocky_10_doca_version }}-rhel10-x86_64-" + base_path: "doca/{{ stackhpc_pulp_rocky_10_doca_version }}/rhel10/x86_64/" required: "{{ stackhpc_pulp_sync_ofed | bool and stackhpc_pulp_sync_el_10 | bool and 'x86_64' in stackhpc_pulp_rpm_architectures }}" - - name: DOCA Online Repo 3.2.2 - RHEL 10 aarch64 - url: "{{ stackhpc_release_pulp_content_url }}/doca/3.2.2/rhel10/aarch64/{{ stackhpc_pulp_repo_doca_3_2_2_rhel10_aarch64_version }}" - distribution_name: "doca-3.2.2-rhel10-aarch64-" - base_path: "doca/3.2.2/rhel10/aarch64/" + - name: DOCA Online Repo {{ stackhpc_pulp_rocky_10_doca_version }} - RHEL 10 aarch64 + url: "{{ stackhpc_release_pulp_content_url }}/doca/{{ stackhpc_pulp_rocky_10_doca_version }}/rhel10/aarch64/{{ stackhpc_pulp_repo_rhel10_doca_aarch64_version }}" + distribution_name: "doca-{{ stackhpc_pulp_rocky_10_doca_version }}-rhel10-aarch64-" + base_path: "doca/{{ stackhpc_pulp_rocky_10_doca_version }}/rhel10/aarch64/" required: "{{ stackhpc_pulp_sync_ofed | bool and stackhpc_pulp_sync_el_10 | bool and 'aarch64' in stackhpc_pulp_rpm_architectures }}" + - name: OFED Kernel modules for DOCA {{ stackhpc_pulp_rocky_10_doca_version }} - RHEL 10 + url: "{{ stackhpc_release_pulp_content_url }}/doca-modules/{{ stackhpc_pulp_rocky_10_doca_version }}/rhel10/x86_64/{{ stackhpc_pulp_repo_rhel10_doca_modules_version }}" + distribution_name: "doca-modules-{{ stackhpc_pulp_rocky_10_doca_version }}-rhel10-" + base_path: "doca-modules/{{ stackhpc_pulp_rocky_10_doca_version }}/rhel10/x86_64/" + required: "{{ stackhpc_pulp_sync_ofed | bool and stackhpc_pulp_sync_el_10 | bool }}" + + - name: OFED Kernel modules for DOCA {{ stackhpc_pulp_rocky_10_doca_version }} - RHEL 10 aarch64 + url: "{{ stackhpc_release_pulp_content_url }}/doca-modules/{{ stackhpc_pulp_rocky_10_doca_version }}/rhel10/aarch64/{{ stackhpc_pulp_repo_rhel10_doca_modules_aarch64_version }}" + distribution_name: "doca-modules-{{ stackhpc_pulp_rocky_10_doca_version }}-rhel10-aarch64-" + base_path: "doca-modules/{{ stackhpc_pulp_rocky_10_doca_version }}/rhel10/aarch64/" + required: "{{ stackhpc_pulp_sync_ofed | bool and stackhpc_pulp_sync_el_10 | bool }}" + # RPM repositories stackhpc_pulp_repository_rpm_repos: >- {%- set rpm_repos = [] -%} diff --git a/etc/kayobe/stackhpc.yml b/etc/kayobe/stackhpc.yml index 853ce40fa..6d3f6327d 100644 --- a/etc/kayobe/stackhpc.yml +++ b/etc/kayobe/stackhpc.yml @@ -50,11 +50,11 @@ 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 }}/rhel{{ doca_rocky_9_minor_dot }}/$basearch/{{ stackhpc_repo_rhel9_doca_version }}" +stackhpc_repo_rhel9_doca_url: "{{ stackhpc_repo_mirror_url }}/pulp/content/doca/{{ stackhpc_pulp_rocky_9_doca_version }}/rhel{{ doca_rocky_9_minor_dot }}/$basearch/{{ stackhpc_repo_rhel9_doca_version }}" stackhpc_repo_rhel9_doca_version: "{{ stackhpc_repo_distribution }}" # DOCA Modules -stackhpc_repo_rhel9_doca_modules_url: "{{ stackhpc_repo_mirror_url }}/pulp/content/doca-modules/{{ stackhpc_pulp_doca_version }}/rhel9.{{ stackhpc_pulp_repo_rocky_9_minor_version }}/$basearch/{{ stackhpc_repo_rhel9_doca_modules_version }}" +stackhpc_repo_rhel9_doca_modules_url: "{{ stackhpc_repo_mirror_url }}/pulp/content/doca-modules/{{ stackhpc_pulp_rocky_9_doca_version }}/rhel9.{{ stackhpc_pulp_repo_rocky_9_minor_version }}/$basearch/{{ stackhpc_repo_rhel9_doca_modules_version }}" stackhpc_repo_rhel9_doca_modules_version: "{{ stackhpc_repo_distribution }}" # Grafana @@ -213,10 +213,14 @@ stackhpc_repo_centos_stream_10_docker_version: "{{ stackhpc_repo_distribution }} stackhpc_repo_rhel_10_mariadb_10_11_url: "{{ stackhpc_repo_mirror_url }}/pulp/content/mariadb-10.11/yum/rhel/10/$basearch/{{ stackhpc_repo_rhel_10_mariadb_10_11_version }}" stackhpc_repo_rhel_10_mariadb_10_11_version: "{{ stackhpc_repo_distribution }}" -# DOCA Repository 3.2.2 for RHEL 10 -stackhpc_repo_rhel10_doca_url: "{{ stackhpc_repo_mirror_url }}/pulp/content/doca/3.2.2/rhel10/$basearch/{{ stackhpc_repo_rhel10_doca_version }}" +# DOCA for RHEL 10 +stackhpc_repo_rhel10_doca_url: "{{ stackhpc_repo_mirror_url }}/pulp/content/doca/{{ stackhpc_pulp_rocky_10_doca_version }}/rhel10/$basearch/{{ stackhpc_repo_rhel10_doca_version }}" stackhpc_repo_rhel10_doca_version: "{{ stackhpc_repo_distribution }}" +# DOCA Modules for RHEL 10 +stackhpc_repo_rhel10_doca_modules_url: "{{ stackhpc_repo_mirror_url }}/pulp/content/doca-modules/{{ stackhpc_pulp_rocky_10_doca_version }}/rhel10/$basearch/{{ stackhpc_repo_rhel10_doca_modules_version }}" +stackhpc_repo_rhel10_doca_modules_version: "{{ stackhpc_repo_distribution }}" + ############################################################################### # Sources diff --git a/releasenotes/notes/ofed-rocky-10-29e36d6b1416723b.yaml b/releasenotes/notes/ofed-rocky-10-29e36d6b1416723b.yaml new file mode 100644 index 000000000..cdfda6896 --- /dev/null +++ b/releasenotes/notes/ofed-rocky-10-29e36d6b1416723b.yaml @@ -0,0 +1,4 @@ +--- +features: + - | + Added support for DOCA OFED on Rocky 10 (``x86_64`` and ``aarch64``) From ca3ed1cb24e616e610006c41134a904ed2c516d3 Mon Sep 17 00:00:00 2001 From: Owen Jones Date: Fri, 22 May 2026 16:55:36 +0100 Subject: [PATCH 3/3] Bump OFED kernel modules to latest kernel --- etc/kayobe/ofed.yml | 4 ++-- etc/kayobe/pulp-repo-versions.yml | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/etc/kayobe/ofed.yml b/etc/kayobe/ofed.yml index 6564e3150..1c22d503e 100644 --- a/etc/kayobe/ofed.yml +++ b/etc/kayobe/ofed.yml @@ -17,8 +17,8 @@ stackhpc_pulp_rocky_10_doca_version: "{{ stackhpc_pulp_doca_version_matrix[doca_ # Available and tested versions of the pre-compiled doca-ofed kernel modules stackhpc_doca_kernel_version_matrix: "9.6": 5.14.0.570.21.1.el9.6 - "9.7": 5.14.0.611.41.1.el9.7 - "10.1": 6.12.0.124.55.1.el10.1 + "9.7": 5.14.0.611.55.1.el9.7 + "10.1": 6.12.0.124.56.1.el10.1 ############################################################################### # Pulp configuration for DOCA OFED diff --git a/etc/kayobe/pulp-repo-versions.yml b/etc/kayobe/pulp-repo-versions.yml index 0f3529f56..7b26b9677 100644 --- a/etc/kayobe/pulp-repo-versions.yml +++ b/etc/kayobe/pulp-repo-versions.yml @@ -28,12 +28,12 @@ stackhpc_pulp_repo_doca_2_9_1_rhel9_5_modules_version: 20250115T150314 stackhpc_pulp_repo_doca_2_9_1_rhel9_5_version: 20241211T171301 stackhpc_pulp_repo_doca_2_9_3_rhel9_6_modules_version: 20250714T141841 stackhpc_pulp_repo_doca_2_9_3_rhel9_6_version: 20250703T135021 -stackhpc_pulp_repo_doca_3_2_2_rhel10_modules_aarch64_version: 20260513T103056 -stackhpc_pulp_repo_doca_3_2_2_rhel10_modules_version: 20260513T103056 +stackhpc_pulp_repo_doca_3_2_2_rhel10_modules_aarch64_version: 20260522T144919 +stackhpc_pulp_repo_doca_3_2_2_rhel10_modules_version: 20260522T144919 stackhpc_pulp_repo_doca_3_2_2_rhel10_aarch64_version: 20260326T091359 stackhpc_pulp_repo_doca_3_2_2_rhel10_x86_64_version: 20260326T091359 -stackhpc_pulp_repo_doca_3_2_2_rhel9_7_modules_aarch64_version: 20260424T151043 -stackhpc_pulp_repo_doca_3_2_2_rhel9_7_modules_version: 20260424T151043 +stackhpc_pulp_repo_doca_3_2_2_rhel9_7_modules_aarch64_version: 20260522T144919 +stackhpc_pulp_repo_doca_3_2_2_rhel9_7_modules_version: 20260522T144919 stackhpc_pulp_repo_doca_3_2_2_rhel9_aarch64_version: 20260326T091359 stackhpc_pulp_repo_doca_3_2_2_rhel9_version: 20260326T091359 stackhpc_pulp_repo_docker_ce_ubuntu_noble_version: 20260506T205129