Skip to content

Commit f85ecfe

Browse files
authored
Add Rocky 9/10 aarch64 overcloud host image support (#2279)
Signed-off-by: Bartosz Bezak <bartosz@stackhpc.com>
1 parent 10e6cb4 commit f85ecfe

9 files changed

Lines changed: 464 additions & 21 deletions

.github/workflows/overcloud-host-image-build.yml

Lines changed: 361 additions & 8 deletions
Large diffs are not rendered by default.

.github/workflows/overcloud-host-image-promote.yml

Lines changed: 55 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,18 @@ on:
77
description: Promote Rocky Linux 9
88
type: boolean
99
default: true
10+
rocky9-aarch64:
11+
description: Promote Rocky Linux 9 aarch64
12+
type: boolean
13+
default: false
1014
rocky10:
1115
description: Promote Rocky Linux 10
1216
type: boolean
1317
default: true
18+
rocky10-aarch64:
19+
description: Promote Rocky Linux 10 aarch64
20+
type: boolean
21+
default: false
1422
ubuntu-noble:
1523
description: Promote Ubuntu 24.04 Noble
1624
type: boolean
@@ -25,7 +33,7 @@ jobs:
2533
steps:
2634
- name: Validate inputs
2735
run: |
28-
if [[ ${{ inputs.rocky9 }} == 'false' && ${{ inputs.rocky10 }} == 'false' && ${{ inputs.ubuntu-noble }} == 'false' ]]; then
36+
if [[ ${{ inputs.rocky9 }} == 'false' && ${{ inputs.rocky9-aarch64 }} == 'false' && ${{ inputs.rocky10 }} == 'false' && ${{ inputs.rocky10-aarch64 }} == 'false' && ${{ inputs.ubuntu-noble }} == 'false' ]]; then
2937
echo "At least one distribution must be selected"
3038
exit 1
3139
fi
@@ -85,6 +93,20 @@ jobs:
8593
working-directory: src/kayobe-config
8694
if: inputs.rocky10
8795

96+
- name: Gather Rocky Linux 9 aarch64 overcloud host image tag
97+
id: rocky9_aarch64_image_tag
98+
run: |
99+
echo image_tag=$(grep stackhpc_rocky_9_overcloud_host_image_version_aarch64: etc/kayobe/pulp-host-image-versions.yml | awk '{print $2}') >> $GITHUB_OUTPUT
100+
working-directory: src/kayobe-config
101+
if: inputs.rocky9-aarch64
102+
103+
- name: Gather Rocky Linux 10 aarch64 overcloud host image tag
104+
id: rocky10_aarch64_image_tag
105+
run: |
106+
echo image_tag=$(grep stackhpc_rocky_10_overcloud_host_image_version_aarch64: etc/kayobe/pulp-host-image-versions.yml | awk '{print $2}') >> $GITHUB_OUTPUT
107+
working-directory: src/kayobe-config
108+
if: inputs.rocky10-aarch64
109+
88110
- name: Gather Ubuntu Noble overcloud host image tag
89111
id: ubuntu_noble_image_tag
90112
run: |
@@ -120,6 +142,38 @@ jobs:
120142
KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD_CI_BUILDER }}
121143
if: inputs.rocky10
122144

145+
- name: Promote Rocky Linux 9 aarch64 overcloud host image artifact
146+
run: |
147+
source venvs/kayobe/bin/activate &&
148+
source src/kayobe-config/kayobe-env --environment ci-builder &&
149+
kayobe playbook run \
150+
src/kayobe-config/etc/kayobe/ansible/pulp/pulp-artifact-promote.yml \
151+
-e artifact_type="kayobe-images" \
152+
-e os_distribution='rocky' \
153+
-e os_release='9' \
154+
-e promotion_tag=${{ steps.rocky9_aarch64_image_tag.outputs.image_tag }} \
155+
-e repository_name="kayobe-images-${{ steps.openstack_release.outputs.openstack_release }}-rocky-9-aarch64" \
156+
-e pulp_base_path="kayobe-images/${{ steps.openstack_release.outputs.openstack_release }}/rocky/9/aarch64"
157+
env:
158+
KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD_CI_BUILDER }}
159+
if: inputs.rocky9-aarch64
160+
161+
- name: Promote Rocky Linux 10 aarch64 overcloud host image artifact
162+
run: |
163+
source venvs/kayobe/bin/activate &&
164+
source src/kayobe-config/kayobe-env --environment ci-builder &&
165+
kayobe playbook run \
166+
src/kayobe-config/etc/kayobe/ansible/pulp/pulp-artifact-promote.yml \
167+
-e artifact_type="kayobe-images" \
168+
-e os_distribution='rocky' \
169+
-e os_release='10' \
170+
-e promotion_tag=${{ steps.rocky10_aarch64_image_tag.outputs.image_tag }} \
171+
-e repository_name="kayobe-images-${{ steps.openstack_release.outputs.openstack_release }}-rocky-10-aarch64" \
172+
-e pulp_base_path="kayobe-images/${{ steps.openstack_release.outputs.openstack_release }}/rocky/10/aarch64"
173+
env:
174+
KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD_CI_BUILDER }}
175+
if: inputs.rocky10-aarch64
176+
123177
- name: Promote Ubuntu Noble 24.04 overcloud host image artifact
124178
run: |
125179
source venvs/kayobe/bin/activate &&

.github/workflows/update-overcloud-host-image-tags.yml

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,15 @@ on:
77
rocky9_tag:
88
description: Overcloud host image tag for Rocky 9
99
type: string
10+
rocky9_aarch64_tag:
11+
description: Overcloud host image tag for Rocky 9 aarch64
12+
type: string
1013
rocky10_tag:
1114
description: Overcloud host image tag for Rocky 10
1215
type: string
16+
rocky10_aarch64_tag:
17+
description: Overcloud host image tag for Rocky 10 aarch64
18+
type: string
1319
ubuntu_noble_tag:
1420
description: Overcloud host image tag for Ubuntu
1521
type: string
@@ -31,17 +37,27 @@ jobs:
3137

3238
- name: Update Rocky 9 overcloud host image tag
3339
run: |
34-
sed -i "/stackhpc_rocky_9_overcloud_host_image_version/s/.*/stackhpc_rocky_9_overcloud_host_image_version: ${{ inputs.rocky9_tag }}/" ${{ github.workspace }}/src/kayobe-config/etc/kayobe/pulp-host-image-versions.yml
40+
sed -i "/^stackhpc_rocky_9_overcloud_host_image_version:/s/.*/stackhpc_rocky_9_overcloud_host_image_version: ${{ inputs.rocky9_tag }}/" ${{ github.workspace }}/src/kayobe-config/etc/kayobe/pulp-host-image-versions.yml
3541
if: "${{ inputs.rocky9_tag != '' }}"
3642

43+
- name: Update Rocky 9 aarch64 overcloud host image tag
44+
run: |
45+
sed -i "/^stackhpc_rocky_9_overcloud_host_image_version_aarch64:/s/.*/stackhpc_rocky_9_overcloud_host_image_version_aarch64: ${{ inputs.rocky9_aarch64_tag }}/" ${{ github.workspace }}/src/kayobe-config/etc/kayobe/pulp-host-image-versions.yml
46+
if: "${{ inputs.rocky9_aarch64_tag != '' }}"
47+
3748
- name: Update Rocky 10 overcloud host image tag
3849
run: |
39-
sed -i "/stackhpc_rocky_10_overcloud_host_image_version/s/.*/stackhpc_rocky_10_overcloud_host_image_version: ${{ inputs.rocky10_tag }}/" ${{ github.workspace }}/src/kayobe-config/etc/kayobe/pulp-host-image-versions.yml
50+
sed -i "/^stackhpc_rocky_10_overcloud_host_image_version:/s/.*/stackhpc_rocky_10_overcloud_host_image_version: ${{ inputs.rocky10_tag }}/" ${{ github.workspace }}/src/kayobe-config/etc/kayobe/pulp-host-image-versions.yml
4051
if: "${{ inputs.rocky10_tag != '' }}"
4152

53+
- name: Update Rocky 10 aarch64 overcloud host image tag
54+
run: |
55+
sed -i "/^stackhpc_rocky_10_overcloud_host_image_version_aarch64:/s/.*/stackhpc_rocky_10_overcloud_host_image_version_aarch64: ${{ inputs.rocky10_aarch64_tag }}/" ${{ github.workspace }}/src/kayobe-config/etc/kayobe/pulp-host-image-versions.yml
56+
if: "${{ inputs.rocky10_aarch64_tag != '' }}"
57+
4258
- name: Update Ubuntu Noble overcloud host image tag
4359
run: |
44-
sed -i "/stackhpc_ubuntu_noble_overcloud_host_image_version/s/.*/stackhpc_ubuntu_noble_overcloud_host_image_version: ${{ inputs.ubuntu_noble_tag }}/" ${{ github.workspace }}/src/kayobe-config/etc/kayobe/pulp-host-image-versions.yml
60+
sed -i "/^stackhpc_ubuntu_noble_overcloud_host_image_version:/s/.*/stackhpc_ubuntu_noble_overcloud_host_image_version: ${{ inputs.ubuntu_noble_tag }}/" ${{ github.workspace }}/src/kayobe-config/etc/kayobe/pulp-host-image-versions.yml
4561
if: "${{ inputs.ubuntu_noble_tag != '' }}"
4662

4763
- name: Propose changes via PR if required
@@ -51,15 +67,17 @@ jobs:
5167
commit-message: >-
5268
Bump overcloud host image tags
5369
author: stackhpc-ci <22933334+stackhpc-ci@users.noreply.github.com>
54-
branch: bump-overcloud-host-images-${{ inputs.rocky9_tag }}-${{ inputs.rocky10_tag }}-${{ inputs.ubuntu_noble_tag }}
70+
branch: bump-overcloud-host-images-${{ inputs.rocky9_tag }}-${{ inputs.rocky9_aarch64_tag }}-${{ inputs.rocky10_tag }}-${{ inputs.rocky10_aarch64_tag }}-${{ inputs.ubuntu_noble_tag }}
5571
delete-branch: true
5672
title: >-
5773
Bump overcloud host image tags
5874
body: |
5975
This PR was created automatically to update the overcloud host image
6076
tags.
6177
Rocky 9: ${{ inputs.rocky9_tag }}
78+
Rocky 9 aarch64: ${{ inputs.rocky9_aarch64_tag }}
6279
Rocky 10: ${{ inputs.rocky10_tag }}
80+
Rocky 10 aarch64: ${{ inputs.rocky10_aarch64_tag }}
6381
Ubuntu Noble: ${{ inputs.ubuntu_noble_tag }}
6482
labels: |
6583
automated

doc/source/configuration/host-images.rst

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,18 @@ in ``etc/kayobe/stackhpc-overcloud-host-images.yml``.
2020
Currently, images exist for the following operating systems:
2121

2222
* Rocky Linux 9
23+
* Rocky Linux 10
2324
* Ubuntu Noble 24.04
2425

2526
The image to download is selected automatically using the ``os_distribution``
2627
and ``os_release`` variables. These images are versioned and a variable for
2728
each OS is stored in ``pulp-host-image-versions.yml``.
2829

30+
The architecture of the Rocky Linux release train overcloud host images can be
31+
selected using ``stackhpc_overcloud_host_image_arch``. Valid values are
32+
``amd64`` and ``aarch64``. Rocky Linux 9 and Rocky Linux 10 ``aarch64`` images
33+
use separate version variables in ``pulp-host-image-versions.yml``.
34+
2935
This content requires the same set of credentials as is used for other
3036
release train content.
3137

etc/kayobe/ansible/pulp/pulp-host-image-download.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
# without the auth credentials in it. Auth is handled by username and
77
# password in the get_url task of this playbook
88
stackhpc_overcloud_host_image_url_no_auth: "{{ stackhpc_release_pulp_content_url }}/kayobe-images/\
9-
{{ openstack_release }}/{{ os_distribution }}/{{ os_release }}/\
9+
{{ openstack_release }}/{{ os_distribution }}/{{ os_release }}{{ '/aarch64' if os_distribution == 'rocky' and stackhpc_overcloud_host_image_arch == 'aarch64' else '' }}/\
1010
{{ stackhpc_overcloud_host_image_version }}/\
1111
overcloud-{{ os_distribution }}-{{ os_release }}.qcow2"
1212
tasks:

etc/kayobe/ansible/tools/openstack-host-image-upload.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
name: "{{ image_name }}"
4141
container_format: bare
4242
disk_format: qcow2
43+
properties: "{{ image_properties | default(omit) }}"
4344
state: present
4445
filename: "{{ local_image_path }}"
4546

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
---
22
# Overcloud host image versioning tags
33
# These images must be in SMS, since they are used by our AIO CI runners
4-
stackhpc_rocky_9_overcloud_host_image_version: 2025.1-20260306T094256
5-
stackhpc_rocky_10_overcloud_host_image_version: 2025.1-20260318T110608
6-
stackhpc_ubuntu_noble_overcloud_host_image_version: 2025.1-20260206T132408
4+
stackhpc_rocky_9_overcloud_host_image_version: 2025.1-20260420T162634
5+
stackhpc_rocky_9_overcloud_host_image_version_aarch64: 2025.1-20260420T162634
6+
stackhpc_rocky_10_overcloud_host_image_version: 2025.1-20260420T162634
7+
stackhpc_rocky_10_overcloud_host_image_version_aarch64: 2025.1-20260420T162634
8+
stackhpc_ubuntu_noble_overcloud_host_image_version: 2025.1-20260420T162634

etc/kayobe/stackhpc-overcloud-host-images.yml

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,19 @@ stackhpc_download_overcloud_host_images: false
88
# Whether or not to build overcloud host images from Ark
99
stackhpc_build_overcloud_image_from_pulp_package_mirrors: false
1010

11+
# Architecture of the Release Train overcloud host images to consume.
12+
# Valid values are amd64 and aarch64.
13+
stackhpc_overcloud_host_image_arch: amd64
14+
1115
# The overcloud host image source, defined by os_distribution, os_release,
1216
# and the current stable version.
1317
stackhpc_overcloud_host_image_url: "{{ stackhpc_release_pulp_content_url_with_auth }}/kayobe-images/\
14-
{{ openstack_release }}/{{ os_distribution }}/{{ os_release }}/\
18+
{{ openstack_release }}/{{ os_distribution }}/{{ os_release }}{{ '/aarch64' if os_distribution == 'rocky' and stackhpc_overcloud_host_image_arch == 'aarch64' else '' }}/\
1519
{{ stackhpc_overcloud_host_image_version }}/\
1620
overcloud-{{ os_distribution }}-{{ os_release }}.qcow2"
1721

1822
# Overcloud host image version tag selection
1923
stackhpc_overcloud_host_image_version: >-
20-
{{ stackhpc_rocky_9_overcloud_host_image_version if os_distribution == 'rocky' and os_release == '9' else
21-
stackhpc_rocky_10_overcloud_host_image_version if os_distribution == 'rocky' and os_release == '10' else
22-
stackhpc_ubuntu_noble_overcloud_host_image_version if os_distribution == 'ubuntu' and os_release == 'noble' }}
24+
{{ lookup('vars', 'stackhpc_' ~ os_distribution ~ '_' ~ os_release ~
25+
'_overcloud_host_image_version' ~
26+
('_aarch64' if os_distribution == 'rocky' and stackhpc_overcloud_host_image_arch == 'aarch64' else '')) }}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
features:
2+
- |
3+
Add Rocky Linux 9 and Rocky Linux 10 ``aarch64`` overcloud host image
4+
build and promotion support. The architecture consumed from Ark can be
5+
selected with ``stackhpc_overcloud_host_image_arch``.

0 commit comments

Comments
 (0)