Skip to content

Commit 8df7484

Browse files
owenjonesAlex-Welsh
authored andcommitted
Build Rocky Linux 10 container images
Changes: * Updated workflow to build Rocky 10 Kolla container images * Updated ci-builder environment to enable valkey image building on Rocky 10 (and enable redis image building on Rocky 9/Ubuntu Noble) * Updated ci-builder and ci-aio environments with pulp tags for Rocky 10 repositories * Added new OVN-LTS repository into pulp repository configuration * Added Rocky 10 repositories into Kolla configuration * Added new `stackhpc_enable_ovn_lts_repo` flag to Kolla configuration to inject OVN-LTS repository into repository sources * Updated Kolla build customisations to separate out Rocky 9 and 10 customisations, and added customisations for Rocky 10 * Added valkey images to pulp image list, and updated unbuildable images lists to reflect * Updated DNF configuration to include Rocky 10 repositories * Updated kolla-images.py to support Rocky 10 as a base distro * Added initial tag for Rocky 10 containers
1 parent e0ae5c4 commit 8df7484

13 files changed

Lines changed: 475 additions & 132 deletions

File tree

.github/workflows/package-build-ofed.yml

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -235,15 +235,19 @@ jobs:
235235
run: |
236236
source venvs/kayobe/bin/activate &&
237237
source src/kayobe-config/kayobe-env --environment ci-doca-builder &&
238-
kayobe seed host configure --skip-tags network,docker,docker-registry
238+
kayobe seed host configure --skip-tags network,docker,docker-registry \
239+
-e os_distribution="rocky" \
240+
-e os_release="9"
239241
env:
240242
KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD_CI_BUILDER }}
241243

242244
- name: Run a distro-sync
243245
run: |
244246
source venvs/kayobe/bin/activate &&
245247
source src/kayobe-config/kayobe-env --environment ci-doca-builder &&
246-
kayobe seed host command run --become --command "dnf distro-sync --refresh --assumeyes"
248+
kayobe seed host command run --become --command "dnf distro-sync --refresh --assumeyes" \
249+
-e os_distribution="rocky" \
250+
-e os_release="9"
247251
env:
248252
KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD_CI_BUILDER }}
249253

@@ -285,7 +289,8 @@ jobs:
285289
source venvs/kayobe/bin/activate &&
286290
source src/kayobe-config/kayobe-env --environment ci-doca-builder &&
287291
kayobe playbook run src/kayobe-config/etc/kayobe/ansible/tools/push-ofed.yml \
288-
-e "ofed_tag=${{ needs.create-tag.outputs.ofed_tag }}"
292+
-e "ofed_tag=${{ needs.create-tag.outputs.ofed_tag }}" \
293+
-e os_release="9"
289294
env:
290295
KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD_CI_BUILDER }}
291296

@@ -462,6 +467,8 @@ jobs:
462467
source venvs/kayobe/bin/activate &&
463468
source src/kayobe-config/kayobe-env --environment ci-doca-builder &&
464469
kayobe seed host configure --skip-tags network,docker,docker-registry \
470+
-e os_distribution="rocky" \
471+
-e os_release="9" \
465472
-e kolla_base_arch="aarch64"
466473
env:
467474
KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD_CI_BUILDER }}
@@ -471,6 +478,8 @@ jobs:
471478
source venvs/kayobe/bin/activate &&
472479
source src/kayobe-config/kayobe-env --environment ci-doca-builder &&
473480
kayobe seed host command run --become --command "dnf distro-sync --refresh --assumeyes" \
481+
-e os_distribution="rocky" \
482+
-e os_release="9" \
474483
-e kolla_base_arch="aarch64"
475484
env:
476485
KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD_CI_BUILDER }}
@@ -515,6 +524,7 @@ jobs:
515524
source src/kayobe-config/kayobe-env --environment ci-doca-builder &&
516525
kayobe playbook run src/kayobe-config/etc/kayobe/ansible/tools/push-ofed.yml \
517526
-e "ofed_tag=${{ needs.create-tag.outputs.ofed_tag }}" \
527+
-e os_release="9"
518528
-e kolla_base_arch="aarch64"
519529
env:
520530
KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD_CI_BUILDER }}

.github/workflows/stackhpc-container-image-build.yml

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,11 @@ on:
2323
type: boolean
2424
required: false
2525
default: true
26+
rocky-linux-10:
27+
description: Build Rocky Linux 10 images?
28+
type: boolean
29+
required: false
30+
default: true
2631
ubuntu-noble:
2732
description: Build Ubuntu Noble 24.04 images?
2833
type: boolean
@@ -66,7 +71,7 @@ jobs:
6671
steps:
6772
- name: Validate inputs
6873
run: |
69-
if [[ ${{ inputs.rocky-linux-9 }} == 'false' && ${{ inputs.ubuntu-noble }} == 'false' ]]; then
74+
if [[ ${{ inputs.rocky-linux-9 }} == 'false' && ${{ inputs.rocky-linux-10 }} == 'false' && ${{ inputs.ubuntu-noble }} == 'false' ]]; then
7075
echo "At least one distribution must be selected"
7176
exit 1
7277
fi
@@ -104,6 +109,10 @@ jobs:
104109
output+="{'name': 'rocky', 'release': 9, 'arch': 'amd64'},"
105110
output+="{'name': 'rocky', 'release': 9, 'arch': 'aarch64'},"
106111
fi
112+
if [[ ${{ inputs.rocky-linux-10 }} == 'true' ]]; then
113+
output+="{'name': 'rocky', 'release': 10, 'arch': 'amd64'},"
114+
output+="{'name': 'rocky', 'release': 10, 'arch': 'aarch64'},"
115+
fi
107116
if [[ ${{ inputs.ubuntu-noble }} == 'true' ]]; then
108117
output+="{'name': 'ubuntu', 'release': 'noble', 'arch': 'amd64'},"
109118
fi
@@ -346,7 +355,7 @@ jobs:
346355
create-manifests:
347356
# Only for Rocky Linux for now
348357
name: Create Multiarch Docker Manifests
349-
if: github.repository == 'stackhpc/stackhpc-kayobe-config' && inputs.push && inputs.rocky-linux-9
358+
if: github.repository == 'stackhpc/stackhpc-kayobe-config' && inputs.push && (inputs.rocky-linux-9 || inputs.rocky-linux-10)
350359
runs-on: ${{ needs.runner-selection.outputs.runner_name_container_image_build }}
351360
permissions: {}
352361
needs:

etc/kayobe/dnf.yml

Lines changed: 114 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -41,16 +41,18 @@
4141
# file: myrepo
4242
# gpgkey: http://gpgkey
4343
# gpgcheck: yes
44-
dnf_custom_repos: "{{ stackhpc_dnf_repos if stackhpc_repos_enabled | bool else [] }}"
44+
dnf_custom_repos: "{{ stackhpc_dnf_repos[os_release] | default({}) if stackhpc_repos_enabled | bool else {} }}"
4545

4646
# A dict of custom repositories that point to the local Pulp server.
4747
# To use these repos, set stackhpc_repos_enabled to true.
4848
# This is done by default for hosts in the overcloud group via a group_vars
4949
# file.
50-
stackhpc_dnf_repos: "{{ dnf_custom_repos_el9 | combine(dnf_custom_repos_rocky_9) | combine(dnf_custom_repos_elrepo_9 if dnf_install_elrepo_9 | bool else {}) | combine(dnf_custom_repos_doca if dnf_install_doca | bool else {}) }}"
50+
stackhpc_dnf_repos:
51+
"9": "{{ dnf_custom_repos_el9 | combine(dnf_custom_repos_rocky_9) | combine(dnf_custom_repos_elrepo_9 if dnf_install_elrepo_9 | bool else {}) | combine(dnf_custom_repos_doca_rocky_9 if dnf_install_doca | bool else {}) }}"
52+
"10": "{{ dnf_custom_repos_el10 | combine(dnf_custom_repos_rocky_10) | combine(dnf_custom_repos_elrepo_10 if dnf_install_elrepo_10 | bool else {}) | combine(dnf_custom_repos_doca_rocky_10 if dnf_install_doca | bool else {}) }}"
5153

5254
# DOCA repositories
53-
dnf_custom_repos_doca:
55+
dnf_custom_repos_doca_rocky_9:
5456
doca:
5557
baseurl: "{{ stackhpc_repo_rhel9_doca_url }}"
5658
description: "DOCA Online Repo {{ stackhpc_pulp_doca_version }} - RHEL $releasever"
@@ -70,7 +72,28 @@ dnf_custom_repos_doca:
7072
username: "{{ stackhpc_repo_mirror_username | default(omit, true) }}"
7173
password: "{{ stackhpc_repo_mirror_password | default(omit, true) }}"
7274

73-
# Custom repositories shared between all RHEL 9 derivatives.
75+
dnf_custom_repos_doca_rocky_10:
76+
doca:
77+
baseurl: "{{ stackhpc_repo_rhel10_doca_url }}"
78+
description: "DOCA Online Repo {{ stackhpc_pulp_doca_version }} - RHEL $releasever"
79+
enabled: "{{ dnf_enable_doca | bool | default(false) }}"
80+
priority: -1
81+
file: doca
82+
gpgcheck: no
83+
username: "{{ stackhpc_repo_mirror_username | default(omit, true) }}"
84+
password: "{{ stackhpc_repo_mirror_password | default(omit, true) }}"
85+
# TODO(owenjones): update this once repo for Rocky 10 has been created in Pulp
86+
# doca-modules:
87+
# baseurl: "{{ stackhpc_repo_rhel9_doca_modules_url }}"
88+
# description: "OFED Kernel module repository for DOCA {{ stackhpc_pulp_doca_version }} - RHEL $releasever"
89+
# enabled: "{{ dnf_enable_doca_modules | bool | default(false) }}"
90+
# priority: -1
91+
# file: doca
92+
# gpgcheck: no
93+
# username: "{{ stackhpc_repo_mirror_username | default(omit, true) }}"
94+
# password: "{{ stackhpc_repo_mirror_password | default(omit, true) }}"
95+
96+
# Custom repositories shared between all RHEL 9/10 derivatives.
7497
dnf_custom_repos_el9:
7598
epel:
7699
baseurl: "{{ stackhpc_repo_epel_9_url }}"
@@ -91,94 +114,164 @@ dnf_custom_repos_el9:
91114
username: "{{ stackhpc_repo_mirror_username | default(omit, true) }}"
92115
password: "{{ stackhpc_repo_mirror_password | default(omit, true) }}"
93116

94-
# ELRepo 9
117+
dnf_custom_repos_el10:
118+
epel:
119+
baseurl: "{{ stackhpc_repo_epel_10_url }}"
120+
description: "Extra Packages for Enterprise Linux $releasever - $basearch"
121+
enabled: "{{ dnf_enable_epel | bool }}"
122+
file: epel
123+
gpgkey: "{{ dnf_epel_10_gpg_key_url }}"
124+
gpgcheck: yes
125+
username: "{{ stackhpc_repo_mirror_username | default(omit, true) }}"
126+
password: "{{ stackhpc_repo_mirror_password | default(omit, true) }}"
127+
docker:
128+
baseurl: "{{ stackhpc_repo_centos_stream_10_docker_url }}"
129+
description: "Package repository for installing docker"
130+
enabled: "{{ dnf_enable_docker | bool }}"
131+
file: docker
132+
gpgkey: "{{ dnf_docker_gpg_key_url }}"
133+
gpgcheck: yes
134+
username: "{{ stackhpc_repo_mirror_username | default(omit, true) }}"
135+
password: "{{ stackhpc_repo_mirror_password | default(omit, true) }}"
136+
137+
# ELRepo 9/10
95138
dnf_custom_repos_elrepo_9:
96139
elrepo:
97140
baseurl: "{{ stackhpc_repo_elrepo_9_url }}"
98141
description: "ELRepo.org Community Enterprise Linux Repository - el9"
99142
enabled: "{{ dnf_enable_elrepo_9 | bool }}"
100143
file: elrepo
101-
gpgkey: https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
144+
gpgkey:
145+
- "{{ dnf_elrepo_gpg_key_url }}"
146+
- "{{ dnf_elrepo_gpg_v2_key_url }}"
147+
gpgcheck: yes
148+
username: "{{ stackhpc_repo_mirror_username | default(omit, true) }}"
149+
password: "{{ stackhpc_repo_mirror_password | default(omit, true) }}"
150+
151+
dnf_custom_repos_elrepo_10:
152+
elrepo:
153+
baseurl: "{{ stackhpc_repo_elrepo_10_url }}"
154+
description: "ELRepo.org Community Enterprise Linux Repository - el10"
155+
enabled: "{{ dnf_enable_elrepo_10 | bool }}"
156+
file: elrepo
157+
gpgkey: "{{ dnf_elrepo_gpg_v2_key_url }}"
102158
gpgcheck: yes
103159
username: "{{ stackhpc_repo_mirror_username | default(omit, true) }}"
104160
password: "{{ stackhpc_repo_mirror_password | default(omit, true) }}"
105161

106-
# Rocky 9 specific repositories
162+
# Rocky 9/10 specific repositories
107163
dnf_custom_repos_rocky_9:
108164
appstream:
109165
baseurl: "{{ stackhpc_repo_rocky_9_appstream_url }}"
110166
description: "Rocky Linux $releasever - AppStream"
111167
file: rocky
112-
gpgkey: "{{ rocky_9_gpg_key }}"
168+
gpgkey: "{{ dnf_rocky_9_gpg_key_url }}"
113169
gpgcheck: yes
114170
username: "{{ stackhpc_repo_mirror_username | default(omit, true) }}"
115171
password: "{{ stackhpc_repo_mirror_password | default(omit, true) }}"
116172
baseos:
117173
baseurl: "{{ stackhpc_repo_rocky_9_baseos_url }}"
118174
description: "Rocky Linux $releasever - BaseOS"
119175
file: rocky
120-
gpgkey: "{{ rocky_9_gpg_key }}"
176+
gpgkey: "{{ dnf_rocky_9_gpg_key_url }}"
121177
gpgcheck: yes
122178
username: "{{ stackhpc_repo_mirror_username | default(omit, true) }}"
123179
password: "{{ stackhpc_repo_mirror_password | default(omit, true) }}"
124180
crb:
125181
baseurl: "{{ stackhpc_repo_rocky_9_crb_url }}"
126182
description: "Rocky Linux $releasever - CRB"
127183
file: rocky
128-
gpgkey: "{{ rocky_9_gpg_key }}"
184+
gpgkey: "{{ dnf_rocky_9_gpg_key_url }}"
129185
gpgcheck: yes
130186
username: "{{ stackhpc_repo_mirror_username | default(omit, true) }}"
131187
password: "{{ stackhpc_repo_mirror_password | default(omit, true) }}"
132188
extras:
133189
baseurl: "{{ stackhpc_repo_rocky_9_extras_url }}"
134190
description: "Rocky Linux $releasever - Extras"
135191
file: rocky-extras
136-
gpgkey: "{{ rocky_9_gpg_key }}"
192+
gpgkey: "{{ dnf_rocky_9_gpg_key_url }}"
137193
gpgcheck: yes
138194
username: "{{ stackhpc_repo_mirror_username | default(omit, true) }}"
139195
password: "{{ stackhpc_repo_mirror_password | default(omit, true) }}"
140196
security-common:
141197
baseurl: "{{ stackhpc_repo_rocky_9_sig_security_common_url }}"
142198
description: "Rocky Linux $releasever - SIG Security Common"
143199
file: Rocky-SIG-Security-Common
144-
gpgkey: "{{ rocky_9_sig_security_gpg_key }}"
200+
gpgkey: "{{ dnf_rocky_9_sig_security_gpg_key_url }}"
145201
gpgcheck: yes
146202
includepkgs: "openssh*"
147203
username: "{{ stackhpc_repo_mirror_username | default(omit, true) }}"
148204
password: "{{ stackhpc_repo_mirror_password | default(omit, true) }}"
149205

206+
dnf_custom_repos_rocky_10:
207+
appstream:
208+
baseurl: "{{ stackhpc_repo_rocky_10_appstream_url }}"
209+
description: "Rocky Linux $releasever - AppStream"
210+
file: rocky
211+
gpgkey: "{{ dnf_rocky_10_gpg_key_url }}"
212+
gpgcheck: yes
213+
username: "{{ stackhpc_repo_mirror_username | default(omit, true) }}"
214+
password: "{{ stackhpc_repo_mirror_password | default(omit, true) }}"
215+
baseos:
216+
baseurl: "{{ stackhpc_repo_rocky_10_baseos_url }}"
217+
description: "Rocky Linux $releasever - BaseOS"
218+
file: rocky
219+
gpgkey: "{{ dnf_rocky_10_gpg_key_url }}"
220+
gpgcheck: yes
221+
username: "{{ stackhpc_repo_mirror_username | default(omit, true) }}"
222+
password: "{{ stackhpc_repo_mirror_password | default(omit, true) }}"
223+
crb:
224+
baseurl: "{{ stackhpc_repo_rocky_10_crb_url }}"
225+
description: "Rocky Linux $releasever - CRB"
226+
file: rocky
227+
gpgkey: "{{ dnf_rocky_10_gpg_key_url }}"
228+
gpgcheck: yes
229+
username: "{{ stackhpc_repo_mirror_username | default(omit, true) }}"
230+
password: "{{ stackhpc_repo_mirror_password | default(omit, true) }}"
231+
extras:
232+
baseurl: "{{ stackhpc_repo_rocky_10_extras_url }}"
233+
description: "Rocky Linux $releasever - Extras"
234+
file: rocky-extras
235+
gpgkey: "{{ dnf_rocky_10_gpg_key_url }}"
236+
gpgcheck: yes
237+
username: "{{ stackhpc_repo_mirror_username | default(omit, true) }}"
238+
password: "{{ stackhpc_repo_mirror_password | default(omit, true) }}"
239+
240+
# GPG key urls
241+
dnf_docker_gpg_key_url: "https://download.docker.com/linux/centos/gpg"
242+
dnf_elrepo_gpg_key_url: "https://www.elrepo.org/RPM-GPG-KEY-elrepo.org"
243+
dnf_elrepo_gpg_v2_key_url: "https://www.elrepo.org/RPM-GPG-KEY-v2-elrepo.org"
244+
dnf_epel_10_gpg_key_url: "https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-10"
245+
dnf_epel_9_gpg_key_url: "https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-9"
246+
dnf_rocky_10_gpg_key_url: "https://dl.rockylinux.org/pub/rocky/RPM-GPG-KEY-Rocky-10"
247+
dnf_rocky_9_gpg_key_url: "https://dl.rockylinux.org/pub/rocky/RPM-GPG-KEY-Rocky-9"
248+
dnf_rocky_9_sig_security_gpg_key_url: "https://dl.rockylinux.org/pub/sig/9/security/x86_64/security-common/RPM-GPG-KEY-Rocky-SIG-Security"
249+
150250
# Whether to enable EPEL repositories. This affects RedHat-based systems only.
151251
dnf_enable_epel: "{{ dnf_install_epel | bool }}"
152252

153253
# Whether to enable the ELRepo repository. This affects RedHat-based, 9.x release systems only.
154254
dnf_enable_elrepo_9: "{{ dnf_install_elrepo_9 | bool }}"
255+
dnf_enable_elrepo_10: "{{ dnf_install_elrepo_10 | bool }}"
155256

156257
# Whether to enable DOCA repositories. This affects RedHat-based systems only.
157258
dnf_enable_doca: "{{ dnf_install_doca | bool }}"
158259

159260
# Whether to enable the DOCA kernel module repository. This affects RedHat-based systems only.
160261
dnf_enable_doca_modules: "{{ dnf_install_doca | bool }}"
161262

162-
# URL of EPEL GPG keys.
163-
dnf_epel_9_gpg_key_url: "https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-9"
164-
165-
rocky_9_gpg_key: "https://dl.rockylinux.org/pub/rocky/RPM-GPG-KEY-Rocky-9"
166-
rocky_9_sig_security_gpg_key: "https://dl.rockylinux.org/pub/sig/9/security/x86_64/security-common/RPM-GPG-KEY-Rocky-SIG-Security"
167-
168263
# Whether to install the epel-release package. This affects RedHat-based
169264
# systems only. Default value is 'false'.
170265
#dnf_install_epel:
171266

172267
# Whether to create a repo file for ELRepo. This affects RedHat-based
173268
# systems only.
174269
dnf_install_elrepo_9: false
270+
dnf_install_elrepo_10: false
175271

176272
# Whether to enable docker dnf repo in stackhpc_dnf_repos
177273
dnf_enable_docker: true
178274

179-
#URL of docker repo GPG key
180-
dnf_docker_gpg_key_url: "https://download.docker.com/linux/centos/gpg"
181-
182275
# Whether to create a repo file for DOCA. This affects RedHat-based
183276
# systems only.
184277
dnf_install_doca: "{{ 'mlnx' in group_names }}"

0 commit comments

Comments
 (0)