Skip to content

Commit b07caac

Browse files
committed
Update AIO workflow for 2026.1
Bump experimental 2026.1 Kayobe Add workaround for LP#2160235 K-A bug LP#2160235 is causing service upgrade to fail. Working around by pulling container images in advance. See [1]. [1] https://bugs.launchpad.net/kolla-ansible/+bug/2160235 Update replacing variable name K-A patch [1] introduced a new variable ``docker_image_url`` to avoid repeating ``docker_image_name_prefix`` variable. Updating kolla-images.py accordingly. [1] https://review.opendev.org/c/openstack/kolla-ansible/+/951747 Remove conditional playbook path Using different playbook path was only needed between 2024.1 and 2025.1 release. Removing as it's now breaking the upgrade path from 2025.1 to 2026.1. Prevent auditd halting machine on disk full and updating CIS auditd variables. Unlike RHEL9 CIS, RHEL10 and Ubuntu24 variables for auditd are not dict formatted. Updated them to comply the pinned version of each CIS roles. Removed ``rhel10cis_auditd_max_log_file`` as it's no longer used by the collection. Revert "Omit AIO CI on 2026.1 branch" This reverts commit efe5cca.
1 parent ad39a03 commit b07caac

5 files changed

Lines changed: 167 additions & 155 deletions

File tree

.github/workflows/stackhpc-all-in-one.yml

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -285,7 +285,7 @@ jobs:
285285
-v $(pwd):/stack/kayobe-automation-env/src/kayobe-config \
286286
-e KAYOBE_ENVIRONMENT -e KAYOBE_VAULT_PASSWORD -e KAYOBE_AUTOMATION_SSH_PRIVATE_KEY \
287287
${{ steps.kayobe_image.outputs.kayobe_image }} \
288-
/stack/kayobe-automation-env/src/kayobe-config/.automation/pipeline/playbook-run.sh etc/kayobe/ansible${{ inputs.upgrade && '/' || '/fixes/' }}fix-hostname.yml
288+
/stack/kayobe-automation-env/src/kayobe-config/.automation/pipeline/playbook-run.sh etc/kayobe/ansible/fixes/fix-hostname.yml
289289
env:
290290
KAYOBE_AUTOMATION_SSH_PRIVATE_KEY: ${{ steps.ssh_key.outputs.ssh_key }}
291291

@@ -296,7 +296,7 @@ jobs:
296296
-v $(pwd):/stack/kayobe-automation-env/src/kayobe-config \
297297
-e KAYOBE_ENVIRONMENT -e KAYOBE_VAULT_PASSWORD -e KAYOBE_AUTOMATION_SSH_PRIVATE_KEY \
298298
${{ steps.kayobe_image.outputs.kayobe_image }} \
299-
/stack/kayobe-automation-env/src/kayobe-config/.automation/pipeline/playbook-run.sh etc/kayobe/ansible${{ inputs.upgrade && '/' || '/maintenance/' }}reboot.yml -e reboot_with_bootstrap_user=true
299+
/stack/kayobe-automation-env/src/kayobe-config/.automation/pipeline/playbook-run.sh etc/kayobe/ansible/maintenance/reboot.yml -e reboot_with_bootstrap_user=true
300300
env:
301301
KAYOBE_AUTOMATION_SSH_PRIVATE_KEY: ${{ steps.ssh_key.outputs.ssh_key }}
302302

@@ -306,7 +306,7 @@ jobs:
306306
-v $(pwd):/stack/kayobe-automation-env/src/kayobe-config \
307307
-e KAYOBE_ENVIRONMENT -e KAYOBE_VAULT_PASSWORD -e KAYOBE_AUTOMATION_SSH_PRIVATE_KEY \
308308
${{ steps.kayobe_image.outputs.kayobe_image }} \
309-
/stack/kayobe-automation-env/src/kayobe-config/.automation/pipeline/playbook-run.sh '$KAYOBE_CONFIG_PATH/ansible${{ inputs.upgrade && '/' || '/tools/' }}growroot.yml'
309+
/stack/kayobe-automation-env/src/kayobe-config/.automation/pipeline/playbook-run.sh '$KAYOBE_CONFIG_PATH/ansible/tools/growroot.yml'
310310
env:
311311
KAYOBE_AUTOMATION_SSH_PRIVATE_KEY: ${{ steps.ssh_key.outputs.ssh_key }}
312312

@@ -356,7 +356,7 @@ jobs:
356356
-v $(pwd):/stack/kayobe-automation-env/src/kayobe-config \
357357
-e KAYOBE_ENVIRONMENT -e KAYOBE_VAULT_PASSWORD -e KAYOBE_AUTOMATION_SSH_PRIVATE_KEY \
358358
${{ steps.kayobe_image.outputs.kayobe_image }} \
359-
/stack/kayobe-automation-env/src/kayobe-config/.automation/pipeline/playbook-run.sh etc/kayobe/ansible${{ inputs.upgrade && '/' || '/tools/' }}configure-aio-resources.yml
359+
/stack/kayobe-automation-env/src/kayobe-config/.automation/pipeline/playbook-run.sh etc/kayobe/ansible/tools/configure-aio-resources.yml
360360
env:
361361
KAYOBE_AUTOMATION_SSH_PRIVATE_KEY: ${{ steps.ssh_key.outputs.ssh_key }}
362362

@@ -437,6 +437,20 @@ jobs:
437437
KAYOBE_AUTOMATION_SSH_PRIVATE_KEY: ${{ steps.ssh_key.outputs.ssh_key }}
438438
if: inputs.upgrade
439439

440+
# NOTE(seunghun1ee): LP#2160235 causes service-check-containers role to fail on upgrade
441+
# This role runs on every role of services, so we need to workaround by pulling images
442+
# before running service upgrade
443+
- name: Pull overcloud container images
444+
run: |
445+
docker run -t --rm \
446+
-v $(pwd):/stack/kayobe-automation-env/src/kayobe-config \
447+
-e KAYOBE_ENVIRONMENT -e KAYOBE_VAULT_PASSWORD -e KAYOBE_AUTOMATION_SSH_PRIVATE_KEY \
448+
$KAYOBE_IMAGE \
449+
/stack/kayobe-automation-env/src/kayobe-config/.automation/pipeline/overcloud-container-image-pull.sh
450+
env:
451+
KAYOBE_AUTOMATION_SSH_PRIVATE_KEY: ${{ steps.ssh_key.outputs.ssh_key }}
452+
if: inputs.upgrade
453+
440454
- name: Service upgrade
441455
run: |
442456
docker run -t --rm \

.github/workflows/stackhpc-pull-request.yml

Lines changed: 142 additions & 142 deletions
Original file line numberDiff line numberDiff line change
@@ -158,153 +158,153 @@ jobs:
158158
secrets: inherit
159159
if: ${{ ! failure() && ! cancelled() && github.repository == 'stackhpc/stackhpc-kayobe-config' }}
160160

161-
# all-in-one-ubuntu-noble-ovn:
162-
# name: aio (Ubuntu Noble OVN)
163-
# permissions: {}
164-
# needs:
165-
# - check-changes
166-
# - build-kayobe-image
167-
# uses: ./.github/workflows/stackhpc-all-in-one.yml
168-
# with:
169-
# kayobe_image: ${{ needs.build-kayobe-image.outputs.kayobe_image }}
170-
# os_distribution: ubuntu
171-
# os_release: noble
172-
# ssh_username: ubuntu
173-
# neutron_plugin: ovn
174-
# OS_CLOUD: openstack
175-
# if: ${{ needs.check-changes.outputs.aio == 'true' }}
176-
# secrets: inherit
177-
# if: ${{ ! failure() && ! cancelled() && github.repository == 'stackhpc/stackhpc-kayobe-config' }}
161+
all-in-one-ubuntu-noble-ovn:
162+
name: aio (Ubuntu Noble OVN)
163+
permissions: {}
164+
needs:
165+
- check-changes
166+
- build-kayobe-image
167+
uses: ./.github/workflows/stackhpc-all-in-one.yml
168+
with:
169+
kayobe_image: ${{ needs.build-kayobe-image.outputs.kayobe_image }}
170+
os_distribution: ubuntu
171+
os_release: noble
172+
ssh_username: ubuntu
173+
neutron_plugin: ovn
174+
OS_CLOUD: openstack
175+
if: ${{ needs.check-changes.outputs.aio == 'true' }}
176+
secrets: inherit
177+
if: ${{ ! failure() && ! cancelled() && github.repository == 'stackhpc/stackhpc-kayobe-config' }}
178178

179-
# all-in-one-rocky-10-ovs:
180-
# name: aio (Rocky 10 OVS)
181-
# permissions: {}
182-
# needs:
183-
# - check-changes
184-
# - build-kayobe-image
185-
# uses: ./.github/workflows/stackhpc-all-in-one.yml
186-
# with:
187-
# kayobe_image: ${{ needs.build-kayobe-image.outputs.kayobe_image }}
188-
# os_distribution: rocky
189-
# os_release: "10"
190-
# ssh_username: cloud-user
191-
# neutron_plugin: ovs
192-
# OS_CLOUD: openstack
193-
# if: ${{ needs.check-changes.outputs.aio == 'true' }}
194-
# secrets: inherit
195-
# if: ${{ ! failure() && ! cancelled() && github.repository == 'stackhpc/stackhpc-kayobe-config' }}
179+
all-in-one-rocky-10-ovs:
180+
name: aio (Rocky 10 OVS)
181+
permissions: {}
182+
needs:
183+
- check-changes
184+
- build-kayobe-image
185+
uses: ./.github/workflows/stackhpc-all-in-one.yml
186+
with:
187+
kayobe_image: ${{ needs.build-kayobe-image.outputs.kayobe_image }}
188+
os_distribution: rocky
189+
os_release: "10"
190+
ssh_username: cloud-user
191+
neutron_plugin: ovs
192+
OS_CLOUD: openstack
193+
if: ${{ needs.check-changes.outputs.aio == 'true' }}
194+
secrets: inherit
195+
if: ${{ ! failure() && ! cancelled() && github.repository == 'stackhpc/stackhpc-kayobe-config' }}
196196

197-
# all-in-one-rocky-10-aarch64-ovs:
198-
# name: aio (Rocky 10 aarch64 OVS)
199-
# permissions: {}
200-
# needs:
201-
# - check-changes
202-
# - build-kayobe-image
203-
# uses: ./.github/workflows/stackhpc-all-in-one.yml
204-
# with:
205-
# kayobe_image: ${{ needs.build-kayobe-image.outputs.kayobe_image }}
206-
# architecture: aarch64
207-
# os_distribution: rocky
208-
# os_release: "10"
209-
# ssh_username: cloud-user
210-
# neutron_plugin: ovs
211-
# OS_CLOUD: openstack
212-
# if: ${{ needs.check-changes.outputs.aio == 'true' }}
213-
# secrets: inherit
214-
# if: ${{ ! failure() && ! cancelled() && github.repository == 'stackhpc/stackhpc-kayobe-config' }}
197+
all-in-one-rocky-10-aarch64-ovs:
198+
name: aio (Rocky 10 aarch64 OVS)
199+
permissions: {}
200+
needs:
201+
- check-changes
202+
- build-kayobe-image
203+
uses: ./.github/workflows/stackhpc-all-in-one.yml
204+
with:
205+
kayobe_image: ${{ needs.build-kayobe-image.outputs.kayobe_image }}
206+
architecture: aarch64
207+
os_distribution: rocky
208+
os_release: "10"
209+
ssh_username: cloud-user
210+
neutron_plugin: ovs
211+
OS_CLOUD: openstack
212+
if: ${{ needs.check-changes.outputs.aio == 'true' }}
213+
secrets: inherit
214+
if: ${{ ! failure() && ! cancelled() && github.repository == 'stackhpc/stackhpc-kayobe-config' }}
215215

216-
# all-in-one-rocky-10-ovn:
217-
# name: aio (Rocky 10 OVN)
218-
# permissions: {}
219-
# needs:
220-
# - check-changes
221-
# - build-kayobe-image
222-
# uses: ./.github/workflows/stackhpc-all-in-one.yml
223-
# with:
224-
# kayobe_image: ${{ needs.build-kayobe-image.outputs.kayobe_image }}
225-
# os_distribution: rocky
226-
# os_release: "10"
227-
# ssh_username: cloud-user
228-
# neutron_plugin: ovn
229-
# OS_CLOUD: openstack
230-
# if: ${{ needs.check-changes.outputs.aio == 'true' }}
231-
# secrets: inherit
232-
# if: ${{ ! failure() && ! cancelled() && github.repository == 'stackhpc/stackhpc-kayobe-config' }}
216+
all-in-one-rocky-10-ovn:
217+
name: aio (Rocky 10 OVN)
218+
permissions: {}
219+
needs:
220+
- check-changes
221+
- build-kayobe-image
222+
uses: ./.github/workflows/stackhpc-all-in-one.yml
223+
with:
224+
kayobe_image: ${{ needs.build-kayobe-image.outputs.kayobe_image }}
225+
os_distribution: rocky
226+
os_release: "10"
227+
ssh_username: cloud-user
228+
neutron_plugin: ovn
229+
OS_CLOUD: openstack
230+
if: ${{ needs.check-changes.outputs.aio == 'true' }}
231+
secrets: inherit
232+
if: ${{ ! failure() && ! cancelled() && github.repository == 'stackhpc/stackhpc-kayobe-config' }}
233233

234-
# all-in-one-rocky-10-aarch64-ovn:
235-
# name: aio (Rocky 10 aarch64 OVN)
236-
# permissions: {}
237-
# needs:
238-
# - check-changes
239-
# - build-kayobe-image
240-
# uses: ./.github/workflows/stackhpc-all-in-one.yml
241-
# with:
242-
# kayobe_image: ${{ needs.build-kayobe-image.outputs.kayobe_image }}
243-
# architecture: aarch64
244-
# os_distribution: rocky
245-
# os_release: "10"
246-
# ssh_username: cloud-user
247-
# neutron_plugin: ovn
248-
# OS_CLOUD: openstack
249-
# if: ${{ needs.check-changes.outputs.aio == 'true' }}
250-
# secrets: inherit
251-
# if: ${{ ! failure() && ! cancelled() && github.repository == 'stackhpc/stackhpc-kayobe-config' }}
234+
all-in-one-rocky-10-aarch64-ovn:
235+
name: aio (Rocky 10 aarch64 OVN)
236+
permissions: {}
237+
needs:
238+
- check-changes
239+
- build-kayobe-image
240+
uses: ./.github/workflows/stackhpc-all-in-one.yml
241+
with:
242+
kayobe_image: ${{ needs.build-kayobe-image.outputs.kayobe_image }}
243+
architecture: aarch64
244+
os_distribution: rocky
245+
os_release: "10"
246+
ssh_username: cloud-user
247+
neutron_plugin: ovn
248+
OS_CLOUD: openstack
249+
if: ${{ needs.check-changes.outputs.aio == 'true' }}
250+
secrets: inherit
251+
if: ${{ ! failure() && ! cancelled() && github.repository == 'stackhpc/stackhpc-kayobe-config' }}
252252

253-
# # Test three upgrade scenarios: Ubuntu Noble OVN, Rocky 10 OVN, and Rocky 10 OVS.
253+
# Test three upgrade scenarios: Ubuntu Noble OVN, Rocky 10 OVN, and Rocky 10 OVS.
254254

255-
# all-in-one-upgrade-ubuntu-noble-ovn:
256-
# name: aio upgrade (Ubuntu Noble OVN)
257-
# permissions: {}
258-
# needs:
259-
# - check-changes
260-
# - build-kayobe-image
261-
# uses: ./.github/workflows/stackhpc-all-in-one.yml
262-
# with:
263-
# kayobe_image: ${{ needs.build-kayobe-image.outputs.kayobe_image }}
264-
# os_distribution: ubuntu
265-
# os_release: noble
266-
# ssh_username: ubuntu
267-
# neutron_plugin: ovn
268-
# OS_CLOUD: openstack
269-
# if: ${{ needs.check-changes.outputs.aio == 'true' }}
270-
# upgrade: true
271-
# secrets: inherit
272-
# if: ${{ ! failure() && ! cancelled() && github.repository == 'stackhpc/stackhpc-kayobe-config' }}
255+
all-in-one-upgrade-ubuntu-noble-ovn:
256+
name: aio upgrade (Ubuntu Noble OVN)
257+
permissions: {}
258+
needs:
259+
- check-changes
260+
- build-kayobe-image
261+
uses: ./.github/workflows/stackhpc-all-in-one.yml
262+
with:
263+
kayobe_image: ${{ needs.build-kayobe-image.outputs.kayobe_image }}
264+
os_distribution: ubuntu
265+
os_release: noble
266+
ssh_username: ubuntu
267+
neutron_plugin: ovn
268+
OS_CLOUD: openstack
269+
if: ${{ needs.check-changes.outputs.aio == 'true' }}
270+
upgrade: true
271+
secrets: inherit
272+
if: ${{ ! failure() && ! cancelled() && github.repository == 'stackhpc/stackhpc-kayobe-config' }}
273273

274-
# all-in-one-upgrade-rocky-10-ovn:
275-
# name: aio upgrade (Rocky 10 OVN)
276-
# permissions: {}
277-
# needs:
278-
# - check-changes
279-
# - build-kayobe-image
280-
# uses: ./.github/workflows/stackhpc-all-in-one.yml
281-
# with:
282-
# kayobe_image: ${{ needs.build-kayobe-image.outputs.kayobe_image }}
283-
# os_distribution: rocky
284-
# os_release: "10"
285-
# ssh_username: cloud-user
286-
# neutron_plugin: ovn
287-
# OS_CLOUD: openstack
288-
# if: ${{ needs.check-changes.outputs.aio == 'true' }}
289-
# upgrade: true
290-
# secrets: inherit
291-
# if: ${{ ! failure() && ! cancelled() && github.repository == 'stackhpc/stackhpc-kayobe-config' }}
274+
all-in-one-upgrade-rocky-10-ovn:
275+
name: aio upgrade (Rocky 10 OVN)
276+
permissions: {}
277+
needs:
278+
- check-changes
279+
- build-kayobe-image
280+
uses: ./.github/workflows/stackhpc-all-in-one.yml
281+
with:
282+
kayobe_image: ${{ needs.build-kayobe-image.outputs.kayobe_image }}
283+
os_distribution: rocky
284+
os_release: "10"
285+
ssh_username: cloud-user
286+
neutron_plugin: ovn
287+
OS_CLOUD: openstack
288+
if: ${{ needs.check-changes.outputs.aio == 'true' }}
289+
upgrade: true
290+
secrets: inherit
291+
if: ${{ ! failure() && ! cancelled() && github.repository == 'stackhpc/stackhpc-kayobe-config' }}
292292

293-
# all-in-one-upgrade-rocky-10-ovs:
294-
# name: aio upgrade (Rocky 10 OVS)
295-
# permissions: {}
296-
# needs:
297-
# - check-changes
298-
# - build-kayobe-image
299-
# uses: ./.github/workflows/stackhpc-all-in-one.yml
300-
# with:
301-
# kayobe_image: ${{ needs.build-kayobe-image.outputs.kayobe_image }}
302-
# os_distribution: rocky
303-
# os_release: "10"
304-
# ssh_username: cloud-user
305-
# neutron_plugin: ovs
306-
# OS_CLOUD: openstack
307-
# if: ${{ needs.check-changes.outputs.aio == 'true' }}
308-
# upgrade: true
309-
# secrets: inherit
310-
# if: ${{ ! failure() && ! cancelled() && github.repository == 'stackhpc/stackhpc-kayobe-config' }}
293+
all-in-one-upgrade-rocky-10-ovs:
294+
name: aio upgrade (Rocky 10 OVS)
295+
permissions: {}
296+
needs:
297+
- check-changes
298+
- build-kayobe-image
299+
uses: ./.github/workflows/stackhpc-all-in-one.yml
300+
with:
301+
kayobe_image: ${{ needs.build-kayobe-image.outputs.kayobe_image }}
302+
os_distribution: rocky
303+
os_release: "10"
304+
ssh_username: cloud-user
305+
neutron_plugin: ovs
306+
OS_CLOUD: openstack
307+
if: ${{ needs.check-changes.outputs.aio == 'true' }}
308+
upgrade: true
309+
secrets: inherit
310+
if: ${{ ! failure() && ! cancelled() && github.repository == 'stackhpc/stackhpc-kayobe-config' }}

etc/kayobe/inventory/group_vars/cis-hardening/cis

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -81,12 +81,11 @@ rhel9cis_rule_5_6_1_1: false
8181
# Rocky 10 CIS Hardening Configuration
8282

8383
# Configure log rotation to prevent audit logs from filling the disk
84-
rhel10cis_auditd_action_mail_acct: root
8584
rhel10cis_auditd_admin_space_left_action: syslog
8685
rhel10cis_auditd_max_log_file_action: rotate
8786
rhel10cis_auditd_max_log_file_size: 1024
88-
rhel10cis_auditd_max_log_file: 10
8987
rhel10cis_auditd_space_left_action: syslog
88+
rhel10cis_auditd_disk_full_action: syslog
9089

9190
# Set an authselect profile name (required)
9291
rhel10cis_authselect_custom_profile_name: "stack"
@@ -236,11 +235,10 @@ ubtu24cis_no_world_write_adjust: false
236235
ubtu24cis_suid_sgid_adjust: false
237236

238237
# Configure log rotation to prevent audit logs from filling the disk
239-
ubtu24cis_auditd:
240-
action_mail_acct: root
241-
space_left_action: syslog
242-
admin_space_left_action: syslog
243-
max_log_file_action: rotate
238+
ubtu24cis_auditd_space_left_action: syslog
239+
ubtu24cis_auditd_admin_space_left_action: syslog
240+
ubtu24cis_auditd_max_log_file_action: rotate
241+
ubtu24cis_auditd_disk_full_action: syslog
244242

245243
# Max size of audit logs (MB)
246244
ubtu24cis_max_log_file_size: 1024

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
kayobe@git+https://github.com/stackhpc/kayobe@stackhpc/20.0.0.5
1+
kayobe@git+https://github.com/stackhpc/kayobe@7862ee3f5a859970a2b810a0388019950e9d48b0
22
ansible-modules-hashivault>=5.3.0
33
pulp-glue==0.33.*
44
pulp-glue-deb==0.3.*

tools/kolla-images.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -315,7 +315,7 @@ def check_image_map(kolla_ansible_path: str):
315315
image_map = yaml.safe_load(image_map_str)
316316
image_var_re = re.compile(r"^([a-z0-9_]+)_image$")
317317
image_map = {
318-
image_var_re.match(image_var).group(1): image.split("/")[-1].replace('{{ docker_image_name_prefix }}', '')
318+
image_var_re.match(image_var).group(1): image.split("/")[-1].replace('{{ docker_image_url }}', '')
319319
for image_var, image in image_map.items()
320320
}
321321
# Filter out unsupported images.

0 commit comments

Comments
 (0)