Skip to content

Commit d72362c

Browse files
markgoddardMaxBed4d
authored andcommitted
DNM: Use kayobe yoga-leafcloud-ci branch
DNM: Skip build kayobe image Allows job to be manually cancelled. CI: Update GitHub action versions for node20 node16 support is deprecated and will be dropped. DNM: more build kayobe image skipping CI: Revert to ens3 interface for Leafcloud Leafcloud is not using the q35 machine type yet. Test job to see if we can cancel midway through. Changed if conditional to YAML format. Prevent skip of build image job. fix wazuh docs formatting add wazuh keypaths for multiple environments to docs docs format nit Co-authored-by: Alex-Welsh <[email protected]> Switch to github hosted runners for host image promote Fix release detection step Add workflow to upload Ark host images to glance Only upload host images when required CI: Update GitHub action versions for node20 node16 support is deprecated and will be dropped. Revert hashicorp/setup-terraform action to v2 due to failure CI: Revert to ens3 interface for Leafcloud Leafcloud is not using the q35 machine type yet. Add Apt auth configuration This allows us to use packages from authenticated repositories such as those on Ark. This patch depends on https://review.opendev.org/c/openstack/kayobe/+/908413 CI: Increase flavor to en1.large - some jobs were failing Tempest jobs CI: Run container image build job on ARC cluster The Actions Runner Controller (ARC) cluster runs GitHub Actions jobs on a Kubernetes cluster. This allows us to dynamically provision resources for our CI workflows. This change switches the container image build jobs to use the ARC cluster. The job now runs in a container, with access to a Docker in Docker container for building images. This allows us to skip the host configuration part of the workflow. See https://github.com/stackhpc/ARC-Installer/ Add package repository credentials to container image build This is necessary to access package repositories hosted on Ark. Don't verify Apt repo CA initially when using HTTPS in container build The Ubuntu base image doesn't contain the ca-certificates package, so we can't verify an HTTPS package mirror to download the ca-certificates package. Using the upstream repos may result in a version conflict when we switch to another mirror. Reinstate previous AiOs.
1 parent 4bb7866 commit d72362c

12 files changed

+595
-68
lines changed

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -362,7 +362,7 @@ jobs:
362362
if: inputs.ubuntu-jammy && steps.build_ubuntu_jammy.outcome == 'success'
363363

364364
- name: Upload updated images artifact
365-
uses: actions/upload-artifact@v3
365+
uses: actions/upload-artifact@v4
366366
with:
367367
name: Updated images list
368368
path: /tmp/updated_images.txt
@@ -374,7 +374,7 @@ jobs:
374374
steps.build_ubuntu_jammy.outcome == 'success'
375375

376376
- name: Upload CentOS build logs if build failed
377-
uses: actions/upload-artifact@v3
377+
uses: actions/upload-artifact@v4
378378
with:
379379
name: CentOS build logs
380380
path: |
@@ -384,7 +384,7 @@ jobs:
384384
if: steps.build_centos_stream_8.outcome == 'failure'
385385

386386
- name: Upload Rocky 8 build logs if build failed
387-
uses: actions/upload-artifact@v3
387+
uses: actions/upload-artifact@v4
388388
with:
389389
name: Rocky 8 build logs
390390
path: |
@@ -394,7 +394,7 @@ jobs:
394394
if: steps.build_rocky_8.outcome == 'failure'
395395

396396
- name: Upload Rocky 9 build logs if build failed
397-
uses: actions/upload-artifact@v3
397+
uses: actions/upload-artifact@v4
398398
with:
399399
name: Rocky 9 build logs
400400
path: |
@@ -404,7 +404,7 @@ jobs:
404404
if: steps.build_rocky_9.outcome == 'failure'
405405

406406
- name: Upload Ubuntu Focal 20.04 build logs if build failed
407-
uses: actions/upload-artifact@v3
407+
uses: actions/upload-artifact@v4
408408
with:
409409
name: Ubuntu Focal 20.04 build logs
410410
path: |
@@ -414,7 +414,7 @@ jobs:
414414
if: steps.build_ubuntu_focal.outcome == 'failure'
415415

416416
- name: Upload Ubuntu Jammy 22.04 build logs if build failed
417-
uses: actions/upload-artifact@v3
417+
uses: actions/upload-artifact@v4
418418
with:
419419
name: Ubuntu Jammy 22.04 build logs
420420
path: |

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ jobs:
3333
overcloud-host-image-promote:
3434
name: Promote overcloud host image
3535
if: github.repository == 'stackhpc/stackhpc-kayobe-config'
36-
runs-on: [self-hosted, stackhpc-kayobe-config-kolla-builder]
36+
runs-on: ubuntu-22.04
3737
steps:
3838
- uses: actions/checkout@v4
3939
with:
@@ -44,6 +44,7 @@ jobs:
4444
run: |
4545
BRANCH=$(awk -F'=' '/defaultbranch/ {print $2}' .gitreview)
4646
echo "openstack_release=${BRANCH}" | sed "s|stable/||" >> $GITHUB_OUTPUT
47+
working-directory: src/kayobe-config
4748

4849
- name: Clone StackHPC Kayobe repository
4950
uses: actions/checkout@v4
Lines changed: 320 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,320 @@
1+
---
2+
name: Upload overcloud host images
3+
on:
4+
workflow_dispatch:
5+
inputs:
6+
centos:
7+
description: Upload CentOS Stream 8
8+
type: boolean
9+
default: true
10+
rocky8:
11+
description: Upload Rocky Linux 8
12+
type: boolean
13+
default: true
14+
rocky9:
15+
description: Upload Rocky Linux 9
16+
type: boolean
17+
default: true
18+
ubuntu-focal:
19+
description: Upload Ubuntu 20.04 Focal
20+
type: boolean
21+
default: true
22+
ubuntu-jammy:
23+
description: Upload Ubuntu 22.04 Jammy
24+
type: boolean
25+
default: true
26+
kayobe-environment:
27+
description: Kayobe environment to use
28+
type: string
29+
default: "ci-builder"
30+
secrets:
31+
KAYOBE_VAULT_PASSWORD:
32+
required: true
33+
CLOUDS_YAML:
34+
required: true
35+
OS_APPLICATION_CREDENTIAL_ID:
36+
required: true
37+
OS_APPLICATION_CREDENTIAL_SECRET:
38+
required: true
39+
40+
env:
41+
ANSIBLE_FORCE_COLOR: True
42+
jobs:
43+
overcloud-host-image-upload:
44+
name: Upload overcloud host images
45+
if: github.repository == 'stackhpc/stackhpc-kayobe-config'
46+
runs-on: arc-skc-host-image-builder-runner
47+
permissions: {}
48+
steps:
49+
- name: Install package dependencies
50+
run: |
51+
sudo apt update
52+
sudo apt install -y build-essential git unzip nodejs python3-wheel python3-pip python3-venv
53+
54+
- uses: actions/checkout@v4
55+
with:
56+
path: src/kayobe-config
57+
58+
- name: Determine OpenStack release
59+
id: openstack_release
60+
run: |
61+
BRANCH=$(awk -F'=' '/defaultbranch/ {print $2}' src/kayobe-config/.gitreview)
62+
echo "openstack_release=${BRANCH}" | sed "s|stable/||" >> $GITHUB_OUTPUT
63+
64+
- name: Clone StackHPC Kayobe repository
65+
uses: actions/checkout@v4
66+
with:
67+
repository: stackhpc/kayobe
68+
ref: refs/heads/stackhpc/${{ steps.openstack_release.outputs.openstack_release }}
69+
path: src/kayobe
70+
71+
- name: Install Kayobe
72+
run: |
73+
mkdir -p venvs &&
74+
pushd venvs &&
75+
python3 -m venv kayobe &&
76+
source kayobe/bin/activate &&
77+
pip install -U pip &&
78+
pip install ../src/kayobe
79+
80+
- name: Bootstrap the control host
81+
run: |
82+
source venvs/kayobe/bin/activate &&
83+
source src/kayobe-config/kayobe-env --environment ${{ inputs.kayobe-environment }} &&
84+
kayobe control host bootstrap --skip-tags bootstrap
85+
86+
- name: Generate clouds.yaml
87+
run: |
88+
cat << EOF > clouds.yaml
89+
${{ secrets.CLOUDS_YAML }}
90+
EOF
91+
92+
- name: Install OpenStack client
93+
run: |
94+
source venvs/kayobe/bin/activate &&
95+
pip install python-openstackclient -c https://opendev.org/openstack/requirements/raw/branch/stable/yoga/upper-constraints.txt
96+
97+
- name: Output CentOS Stream 8 image tag
98+
id: centos_8_stream_image_tag
99+
run: |
100+
echo image_tag=$(grep stackhpc_centos_8_stream_overcloud_host_image_version: src/kayobe-config/etc/kayobe/pulp-host-image-versions.yml | awk '{print $2}') >> $GITHUB_OUTPUT
101+
102+
- name: Check if image exists already
103+
id: centos_8_stream_image_exists
104+
run: |
105+
source venvs/kayobe/bin/activate &&
106+
openstack image show \
107+
overcloud-centos-8-stream-${{ steps.centos_8_stream_image_tag.outputs.image_tag }}
108+
env:
109+
OS_CLOUD: openstack
110+
OS_APPLICATION_CREDENTIAL_ID: ${{ secrets.OS_APPLICATION_CREDENTIAL_ID }}
111+
OS_APPLICATION_CREDENTIAL_SECRET: ${{ secrets.OS_APPLICATION_CREDENTIAL_SECRET }}
112+
continue-on-error: true
113+
114+
- name: Download CentOS Stream 8 overcloud host image from Ark
115+
run: |
116+
source venvs/kayobe/bin/activate &&
117+
source src/kayobe-config/kayobe-env --environment ${{ inputs.kayobe-environment }} &&
118+
kayobe playbook run \
119+
src/kayobe-config/etc/kayobe/ansible/pulp-host-image-download.yml \
120+
-e os_distribution="centos" \
121+
-e os_release="8-stream"
122+
env:
123+
KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }}
124+
if: inputs.centos && steps.centos_8_stream_image_exists.outcome == 'failure'
125+
126+
- name: Upload CentOS Stream 8 overcloud host image to Cloud
127+
run: |
128+
source venvs/kayobe/bin/activate &&
129+
openstack image create \
130+
overcloud-centos-8-stream-${{ steps.centos_8_stream_image_tag.outputs.image_tag }} \
131+
--container-format bare \
132+
--disk-format qcow2 \
133+
--file /tmp/centos-8-stream.qcow2 \
134+
--private \
135+
--progress
136+
env:
137+
OS_CLOUD: openstack
138+
OS_APPLICATION_CREDENTIAL_ID: ${{ secrets.OS_APPLICATION_CREDENTIAL_ID }}
139+
OS_APPLICATION_CREDENTIAL_SECRET: ${{ secrets.OS_APPLICATION_CREDENTIAL_SECRET }}
140+
if: inputs.centos && steps.centos_8_stream_image_exists.outcome == 'failure'
141+
142+
- name: Output Rocky Linux 8 image tag
143+
id: rocky_8_image_tag
144+
run: |
145+
echo image_tag=$(grep stackhpc_rocky_8_overcloud_host_image_version: src/kayobe-config/etc/kayobe/pulp-host-image-versions.yml | awk '{print $2}') >> $GITHUB_OUTPUT
146+
147+
- name: Check if image exists already
148+
id: rocky_8_image_exists
149+
run: |
150+
source venvs/kayobe/bin/activate &&
151+
openstack image show \
152+
overcloud-rocky-8-${{ steps.rocky_8_image_tag.outputs.image_tag }}
153+
env:
154+
OS_CLOUD: openstack
155+
OS_APPLICATION_CREDENTIAL_ID: ${{ secrets.OS_APPLICATION_CREDENTIAL_ID }}
156+
OS_APPLICATION_CREDENTIAL_SECRET: ${{ secrets.OS_APPLICATION_CREDENTIAL_SECRET }}
157+
continue-on-error: true
158+
159+
- name: Download Rocky Linux 8 overcloud host image from Ark
160+
run: |
161+
source venvs/kayobe/bin/activate &&
162+
source src/kayobe-config/kayobe-env --environment ${{ inputs.kayobe-environment }} &&
163+
kayobe playbook run \
164+
src/kayobe-config/etc/kayobe/ansible/pulp-host-image-download.yml \
165+
-e os_distribution="rocky" \
166+
-e os_release="8"
167+
env:
168+
KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }}
169+
if: inputs.rocky8 && steps.rocky_8_image_exists.outcome == 'failure'
170+
171+
- name: Upload Rocky Linux 8 overcloud host image to Cloud
172+
run: |
173+
source venvs/kayobe/bin/activate &&
174+
openstack image create \
175+
overcloud-rocky-8-${{ steps.rocky_8_image_tag.outputs.image_tag }} \
176+
--container-format bare \
177+
--disk-format qcow2 \
178+
--file /tmp/rocky-8.qcow2 \
179+
--private \
180+
--progress
181+
env:
182+
OS_CLOUD: openstack
183+
OS_APPLICATION_CREDENTIAL_ID: ${{ secrets.OS_APPLICATION_CREDENTIAL_ID }}
184+
OS_APPLICATION_CREDENTIAL_SECRET: ${{ secrets.OS_APPLICATION_CREDENTIAL_SECRET }}
185+
if: inputs.rocky8 && steps.rocky_8_image_exists.outcome == 'failure'
186+
187+
- name: Output Rocky Linux 9 image tag
188+
id: rocky_9_image_tag
189+
run: |
190+
echo image_tag=$(grep stackhpc_rocky_9_overcloud_host_image_version: src/kayobe-config/etc/kayobe/pulp-host-image-versions.yml | awk '{print $2}') >> $GITHUB_OUTPUT
191+
192+
- name: Check if image exists already
193+
id: rocky_9_image_exists
194+
run: |
195+
source venvs/kayobe/bin/activate &&
196+
openstack image show \
197+
overcloud-rocky-9-${{ steps.rocky_9_image_tag.outputs.image_tag }}
198+
env:
199+
OS_CLOUD: openstack
200+
OS_APPLICATION_CREDENTIAL_ID: ${{ secrets.OS_APPLICATION_CREDENTIAL_ID }}
201+
OS_APPLICATION_CREDENTIAL_SECRET: ${{ secrets.OS_APPLICATION_CREDENTIAL_SECRET }}
202+
continue-on-error: true
203+
204+
- name: Download Rocky Linux 9 overcloud host image from Ark
205+
run: |
206+
source venvs/kayobe/bin/activate &&
207+
source src/kayobe-config/kayobe-env --environment ${{ inputs.kayobe-environment }} &&
208+
kayobe playbook run \
209+
src/kayobe-config/etc/kayobe/ansible/pulp-host-image-download.yml \
210+
-e os_distribution="rocky" \
211+
-e os_release="9"
212+
env:
213+
KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }}
214+
if: inputs.rocky9 && steps.rocky_9_image_exists.outcome == 'failure'
215+
216+
- name: Upload Rocky Linux 9 overcloud host image to Cloud
217+
run: |
218+
source venvs/kayobe/bin/activate &&
219+
openstack image create \
220+
overcloud-rocky-9-${{ steps.rocky_9_image_tag.outputs.image_tag }} \
221+
--container-format bare \
222+
--disk-format qcow2 \
223+
--file /tmp/rocky-9.qcow2 \
224+
--private \
225+
--progress
226+
env:
227+
OS_CLOUD: openstack
228+
OS_APPLICATION_CREDENTIAL_ID: ${{ secrets.OS_APPLICATION_CREDENTIAL_ID }}
229+
OS_APPLICATION_CREDENTIAL_SECRET: ${{ secrets.OS_APPLICATION_CREDENTIAL_SECRET }}
230+
if: inputs.rocky9 && steps.rocky_9_image_exists.outcome == 'failure'
231+
232+
- name: Output Ubuntu Focal image tag
233+
id: ubuntu_focal_image_tag
234+
run: |
235+
echo image_tag=$(grep stackhpc_ubuntu_focal_overcloud_host_image_version: src/kayobe-config/etc/kayobe/pulp-host-image-versions.yml | awk '{print $2}') >> $GITHUB_OUTPUT
236+
237+
- name: Check if image exists already
238+
id: ubuntu_focal_image_exists
239+
run: |
240+
source venvs/kayobe/bin/activate &&
241+
openstack image show \
242+
overcloud-ubuntu-focal-${{ steps.ubuntu_focal_image_tag.outputs.image_tag }}
243+
env:
244+
OS_CLOUD: openstack
245+
OS_APPLICATION_CREDENTIAL_ID: ${{ secrets.OS_APPLICATION_CREDENTIAL_ID }}
246+
OS_APPLICATION_CREDENTIAL_SECRET: ${{ secrets.OS_APPLICATION_CREDENTIAL_SECRET }}
247+
continue-on-error: true
248+
249+
- name: Download Ubuntu Focal 20.04 overcloud host image from Ark
250+
run: |
251+
source venvs/kayobe/bin/activate &&
252+
source src/kayobe-config/kayobe-env --environment ${{ inputs.kayobe-environment }} &&
253+
kayobe playbook run \
254+
src/kayobe-config/etc/kayobe/ansible/pulp-host-image-download.yml \
255+
-e os_distribution="ubuntu" \
256+
-e os_release="focal"
257+
env:
258+
KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }}
259+
if: inputs.ubuntu-focal && steps.ubuntu_focal_image_exists.outcome == 'failure'
260+
261+
- name: Upload Ubuntu Focal 20.04 overcloud host image to Cloud
262+
run: |
263+
source venvs/kayobe/bin/activate &&
264+
openstack image create \
265+
overcloud-ubuntu-focal-${{ steps.ubuntu_focal_image_tag.outputs.image_tag }} \
266+
--container-format bare \
267+
--disk-format qcow2 \
268+
--file /tmp/ubuntu-focal.qcow2 \
269+
--private \
270+
--progress
271+
env:
272+
OS_CLOUD: openstack
273+
OS_APPLICATION_CREDENTIAL_ID: ${{ secrets.OS_APPLICATION_CREDENTIAL_ID }}
274+
OS_APPLICATION_CREDENTIAL_SECRET: ${{ secrets.OS_APPLICATION_CREDENTIAL_SECRET }}
275+
if: inputs.ubuntu-focal && steps.ubuntu_focal_image_exists.outcome == 'failure'
276+
277+
- name: Output Ubuntu Jammy image tag
278+
id: ubuntu_jammy_image_tag
279+
run: |
280+
echo image_tag=$(grep stackhpc_ubuntu_jammy_overcloud_host_image_version: src/kayobe-config/etc/kayobe/pulp-host-image-versions.yml | awk '{print $2}') >> $GITHUB_OUTPUT
281+
282+
- name: Check if image exists already
283+
id: ubuntu_jammy_image_exists
284+
run: |
285+
source venvs/kayobe/bin/activate &&
286+
openstack image show \
287+
overcloud-ubuntu-jammy-${{ steps.ubuntu_jammy_image_tag.outputs.image_tag }}
288+
env:
289+
OS_CLOUD: openstack
290+
OS_APPLICATION_CREDENTIAL_ID: ${{ secrets.OS_APPLICATION_CREDENTIAL_ID }}
291+
OS_APPLICATION_CREDENTIAL_SECRET: ${{ secrets.OS_APPLICATION_CREDENTIAL_SECRET }}
292+
continue-on-error: true
293+
294+
- name: Download Ubuntu Jammy 22.04 overcloud host image from Ark
295+
run: |
296+
source venvs/kayobe/bin/activate &&
297+
source src/kayobe-config/kayobe-env --environment ${{ inputs.kayobe-environment }} &&
298+
kayobe playbook run \
299+
src/kayobe-config/etc/kayobe/ansible/pulp-host-image-download.yml \
300+
-e os_distribution="ubuntu" \
301+
-e os_release="jammy"
302+
env:
303+
KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }}
304+
if: inputs.ubuntu-jammy && steps.ubuntu_jammy_image_exists.outcome == 'failure'
305+
306+
- name: Upload Ubuntu Jammy 22.04 overcloud host image to Cloud
307+
run: |
308+
source venvs/kayobe/bin/activate &&
309+
openstack image create \
310+
overcloud-ubuntu-jammy-${{ steps.ubuntu_jammy_image_tag.outputs.image_tag }} \
311+
--container-format bare \
312+
--disk-format qcow2 \
313+
--file /tmp/ubuntu-jammy.qcow2 \
314+
--private \
315+
--progress
316+
env:
317+
OS_CLOUD: openstack
318+
OS_APPLICATION_CREDENTIAL_ID: ${{ secrets.OS_APPLICATION_CREDENTIAL_ID }}
319+
OS_APPLICATION_CREDENTIAL_SECRET: ${{ secrets.OS_APPLICATION_CREDENTIAL_SECRET }}
320+
if: inputs.ubuntu-jammy && steps.ubuntu_jammy_image_exists.outcome == 'failure'

0 commit comments

Comments
 (0)