Remove tinyipa support and switch to DIB-based IPA

We stop supporting tinyipa entirely and switch all jobs to use
DIB-based (diskimage-builder) IPA images.

Renamed all CI jobs as we use DIB-based IPA ramdisks only now.

Increased test VM memory from 1024 MB to 4096 MB to accommodate
larger DIB-based IPA ramdisks (~500 MB vs ~80 MB for tinyipa).

Kept 3 jobs with their legacy name despite they use DIB-based
IPA ramdisks now as other projects still use them.

Change-Id: I569a766826405513f7beab5d45a52a8bbf42ddfd
Signed-off-by: Riccardo Pittau <elfosardo@gmail.com>
This commit is contained in:
Riccardo Pittau
2025-10-20 15:23:34 +02:00
parent 71bebff81e
commit 6f1fa32749
9 changed files with 111 additions and 113 deletions

View File

@@ -183,7 +183,6 @@ def cmd_install(args):
cleaning_disk_erase=args.cleaning_disk_erase,
testing=args.testenv,
download_custom_deploy_image=args.testenv,
use_tinyipa=args.testenv,
developer_mode=args.develop,
enable_prometheus_exporter=args.enable_prometheus_exporter,
default_boot_mode=args.boot_mode or 'uefi',

View File

@@ -137,7 +137,6 @@ journald
$ sudo tar -xzf \
/var/log/ironic/deploy/493aacf2-90ec-5e3d-9ce5-ea496f12e2a5_testvm3_2021-11-08-17-34-18.tar.gz
$ less journal # for ramdisks that use systemd, e.g. DIB-built
$ less var/log/ironic-python-agent.log # for tinyIPA and similar
``/var/log/nginx/``
contains logs for serving files (iPXE scripts, images, virtual media ISOs).

View File

@@ -45,13 +45,10 @@ debugging which must be done in a custom image as there is no mechanism
to enable debugging via the kernel command line at present.
Custom IPA images can be built a number of ways, the most generally useful
mechanism is with diskimage-builder as the distributions typically have
better hardware support than Tiny Core Linux.
mechanism is with diskimage-builder.
DIB images:
https://docs.openstack.org/ironic-python-agent-builder/latest/admin/dib.html
TinyIPA:
https://docs.openstack.org/ironic-python-agent-builder/latest/admin/tinyipa.html
For documentation on diskimage-builder, See::
https://docs.openstack.org/diskimage-builder/latest/.
@@ -138,34 +135,6 @@ Example::
NOTE: The matching private key will need to be utilized to login to the
machine deployed.
******************************************
Changing from TinyIPA to another IPA Image
******************************************
With-in the Newton cycle, the default IPA image for Bifrost was changed
to TinyIPA, which is based on Tiny Core Linux. This has a greatly reduced
boot time for testing, however should be expected to have less hardware
support. In the Yoga cycle, the default image was changed to one based
on CentOS.
If on a fresh install, or a re-install, you wish to change to
DIB-based or any other IPA image, you will need to take the following steps:
#. Remove the existing IPA image ipa.kernel and ipa.initramfs.
#. Edit the ``playbooks/roles/bifrost-ironic-install/defaults/main.yml``
file and update the ``ipa_kernel_upstream_url`` and
``ipa_kernel_upstream_url`` settings to a new URL.
For DIB-based images, these urls would be,
``https://tarballs.opendev.org/openstack/ironic-python-agent/dib/files/ipa-centos9-master.kernel``
and
``https://tarballs.opendev.org/openstack/ironic-python-agent/dib/files/ipa-centos9-master.initramfs``
respectively.
#. Execute the installation playbook, and the set files will be automatically
downloaded again. If the files are not removed prior to (re)installation,
then they will not be replaced. Alternatively, the files can just be
directly replaced on disk. The default where the kernel and ramdisk are
located is in ``/httboot/``.
******************************************************
Verifying Creation of Test Virtual Machines (VMs)
******************************************************

View File

@@ -36,7 +36,7 @@ test_vm_logdir: "/var/log/libvirt/baremetal_logs"
test_vm_emulator: "/usr/bin/qemu-system-x86_64"
test_vm_machine: "q35"
# Forces machines to use secure boot. Only compatible with virtual media,
# requires using a real ramdisk (not tinyIPA) matching the host distribution,
# requires using a real ramdisk matching the host distribution,
# as well as a real instance image (not cirros).
test_vm_secure_boot: false
default_boot_mode: "{{ 'uefi' if test_vm_secure_boot | bool else '' }}"

View File

@@ -66,7 +66,6 @@ firewalld_internal_zone: bifrost
ipa_file_protocol: "http"
ipa_upstream_release: "master"
use_tinyipa: false
ipxe_efi_binary: snponly.efi
@@ -76,21 +75,11 @@ ipa_kernel: "{{ http_boot_folder }}/ipa.kernel"
ipa_ramdisk: "{{ http_boot_folder }}/ipa.initramfs"
ipa_kernel_url: "{{ ipa_file_protocol }}://{{ internal_ip }}:{{ file_url_port }}/ipa.kernel"
ipa_download_distro: centos9
ipa_kernel_upstream_url: >-
{%- if use_tinyipa | bool -%}
{{ tarballs_base_url }}/tinyipa/files/tinyipa-{{ ipa_upstream_release }}.vmlinuz
{%- else -%}
{{ tarballs_base_url }}/dib/files/ipa-{{ ipa_download_distro }}-{{ ipa_upstream_release }}.kernel
{%- endif -%}
ipa_kernel_upstream_url: "{{ tarballs_base_url }}/dib/files/ipa-{{ ipa_download_distro }}-{{ ipa_upstream_release }}.kernel"
ipa_kernel_upstream_checksum_algo: "sha256"
ipa_kernel_upstream_checksum_url: "{{ ipa_kernel_upstream_url }}.{{ ipa_kernel_upstream_checksum_algo }}"
ipa_ramdisk_url: "{{ ipa_file_protocol }}://{{ internal_ip }}:{{ file_url_port }}/ipa.initramfs"
ipa_ramdisk_upstream_url: >-
{%- if use_tinyipa | bool -%}
{{ tarballs_base_url }}/tinyipa/files/tinyipa-{{ ipa_upstream_release }}.gz
{%- else -%}
{{ tarballs_base_url }}/dib/files/ipa-{{ ipa_download_distro }}-{{ ipa_upstream_release }}.initramfs
{%- endif -%}
ipa_ramdisk_upstream_url: "{{ tarballs_base_url }}/dib/files/ipa-{{ ipa_download_distro }}-{{ ipa_upstream_release }}.initramfs"
ipa_ramdisk_upstream_checksum_algo: "sha256"
ipa_ramdisk_upstream_checksum_url: "{{ ipa_ramdisk_upstream_url }}.{{ ipa_ramdisk_upstream_checksum_algo }}"
deploy_image_filename: "deployment_image.qcow2"

View File

@@ -0,0 +1,16 @@
---
upgrade:
- |
Using tinyipa as ironic-python-agent ramdisk is not supported anymore.
Bifrost has switched to using DIB (diskimage-builder) based IPA ramdisks
for all CI jobs.
All Bifrost CI jobs now use ``dibipa`` (DIB-based IPA) in their names
to clearly indicate they use full-featured IPA ramdisks built with
diskimage-builder.
Test VM memory has been increased from 1024 MB to 4096 MB to accommodate
the larger DIB-based IPA ramdisks (~500 MB vs ~80 MB for tinyipa).
Three legacy job names with ``tinyipa`` in their names are kept for
backward compatibility with other OpenStack projects (Ironic,
openstacksdk, ansible-collections-openstack). These jobs now use
DIB-based IPA despite their names. Projects using these legacy job
names should migrate to the new ``dibipa`` job names when ready.

View File

@@ -106,7 +106,6 @@ if [ ${USE_DHCP} = "true" ]; then
elif [ ${BUILD_IMAGE} = "true" ]; then
DOWNLOAD_CUSTOM_DEPLOY_IMAGE=false
TESTING_USER=root
VM_MEMORY_SIZE="4096"
INSPECT_NODES=false
DOWNLOAD_IPA=false
CREATE_IPA_IMAGE=true
@@ -159,7 +158,7 @@ done
# Create the test VMs
../bifrost-cli --debug testenv \
--count ${TEST_VM_NUM_NODES} \
--memory ${VM_MEMORY_SIZE:-1024} \
--memory ${VM_MEMORY_SIZE:-4096} \
--disk ${VM_DISK:-5} \
--inventory "${BAREMETAL_DATA_FILE}" \
--extra-vars git_url_root="${WORKSPACE:-https://opendev.org}" \
@@ -194,7 +193,6 @@ ${ANSIBLE} -vvvv \
-i inventory/target \
${TEST_PLAYBOOK} \
-e download_custom_deploy_image=${DOWNLOAD_CUSTOM_DEPLOY_IMAGE} \
-e use_tinyipa=true \
-e testing_user=${TESTING_USER} \
-e test_vm_num_nodes=${TEST_VM_NUM_NODES} \
-e inventory_dhcp=${INVENTORY_DHCP} \

View File

@@ -4,6 +4,12 @@
- name: primary
label: centos-10-stream-8GB
- nodeset:
name: bifrost-ubuntu-noble-8GB
nodes:
- name: primary
label: ubuntu-noble-8GB
- job:
name: bifrost-base
parent: base
@@ -53,7 +59,7 @@
nodeset: bifrost-centos-10-stream
- job:
name: bifrost-integration-dibipa-debian
name: bifrost-integration-debian-ipasrc
parent: bifrost-integration
timeout: 7200
vars:
@@ -63,36 +69,50 @@
test_driver: redfish
- job:
name: bifrost-integration-dibipa-debian-ubuntu-jammy
parent: bifrost-integration-dibipa-debian
name: bifrost-integration-debian-ipasrc-on-ubuntu-jammy
parent: bifrost-integration-debian-ipasrc
nodeset: ubuntu-jammy
- job:
name: bifrost-integration-dibipa-debian-centos-10
parent: bifrost-integration-dibipa-debian
name: bifrost-integration-debian-ipasrc-on-centos-10
parent: bifrost-integration-debian-ipasrc
nodeset: bifrost-centos-10-stream
- job:
name: bifrost-integration-tinyipa
parent: bifrost-base
timeout: 3600
vars:
noauth_mode: false
#NOTE(rpittau): Currently used by openstacksdk and ansible-collections-openstack.
#DO NOT REMOVE until these projects are updated to use the new job.
- job:
name: bifrost-integration-tinyipa-ubuntu-jammy
parent: bifrost-integration-tinyipa
parent: bifrost-integration
nodeset: ubuntu-jammy
timeout: 7200
- job:
name: bifrost-integration-on-ubuntu-jammy
parent: bifrost-integration
nodeset: ubuntu-jammy
timeout: 7200
#NOTE(rpittau): Currently used by Ironic.
#DO NOT REMOVE until Ironic is updated to use the new job.
- job:
name: bifrost-integration-tinyipa-ubuntu-noble
parent: bifrost-integration-tinyipa
nodeset: ubuntu-noble
parent: bifrost-integration
nodeset: bifrost-ubuntu-noble-8GB
timeout: 7200
- job:
name: bifrost-integration-on-ubuntu-noble
parent: bifrost-integration
nodeset: bifrost-ubuntu-noble-8GB
timeout: 7200
#NOTE(rpittau): Currently used by ansible-collections-openstack.
#DO NOT REMOVE until these projects are updated to use the new job.
- job:
name: bifrost-integration-tinyipa-keystone-ubuntu-jammy
parent: bifrost-integration-tinyipa
parent: bifrost-integration
nodeset: ubuntu-jammy
timeout: 7200
required-projects:
- openstack/keystone
- openstack/ironic-prometheus-exporter
@@ -103,13 +123,29 @@
enable_prometheus_exporter: true
- job:
name: bifrost-integration-tinyipa-keystone-ubuntu-noble
parent: bifrost-integration-tinyipa-keystone-ubuntu-jammy
nodeset: ubuntu-noble
name: bifrost-integration-keystone-on-ubuntu-jammy
parent: bifrost-integration
nodeset: ubuntu-jammy
timeout: 7200
required-projects:
- openstack/keystone
- openstack/ironic-prometheus-exporter
vars:
enable_keystone: true
enable_tls: true
test_driver: redfish
enable_prometheus_exporter: true
- job:
name: bifrost-integration-keystone-on-ubuntu-noble
parent: bifrost-integration-keystone-on-ubuntu-jammy
nodeset: bifrost-ubuntu-noble-8GB
timeout: 7200
- job:
name: bifrost-integration-redfish-vmedia-uefi-ubuntu-noble
parent: bifrost-integration-tinyipa-ubuntu-noble
parent: bifrost-integration-on-ubuntu-noble
nodeset: bifrost-ubuntu-noble-8GB
vars:
enable_tls: true
test_driver: redfish
@@ -117,7 +153,7 @@
- job:
name: bifrost-integration-redfish-vmedia-uefi-ubuntu-jammy
parent: bifrost-integration-tinyipa-ubuntu-jammy
parent: bifrost-integration-on-ubuntu-jammy
vars:
enable_tls: true
test_driver: redfish
@@ -125,40 +161,33 @@
- job:
name: bifrost-cli-ubuntu-jammy
parent: bifrost-integration-tinyipa-ubuntu-jammy
parent: bifrost-integration-on-ubuntu-jammy
vars:
cli_test: true
- job:
name: bifrost-integration-redfish-vmedia-uefi-centos-10
parent: bifrost-integration-tinyipa-centos-10
vars:
test_driver: redfish
use_vmedia: true
# FIXME(dtantsur): remove when this job is no longer used on Ironic
- job:
name: bifrost-integration-redfish-vmedia-uefi-centos-9
parent: bifrost-integration-tinyipa-centos-9
parent: bifrost-integration-on-centos-10
vars:
test_driver: redfish
use_vmedia: true
- job:
name: bifrost-integration-redfish-pxe-uefi-ubuntu-noble
parent: bifrost-integration-tinyipa-ubuntu-noble
parent: bifrost-integration-on-ubuntu-noble
vars:
enable_grub_network_boot: true
test_driver: redfish
- job:
name: bifrost-integration-tinyipa-centos-10
parent: bifrost-integration-tinyipa
name: bifrost-integration-on-centos-10
parent: bifrost-integration
nodeset: bifrost-centos-10-stream
timeout: 7200
- job:
name: bifrost-integration-tinyipa-keystone-centos-10
parent: bifrost-integration-tinyipa-centos-10
name: bifrost-integration-keystone-on-centos-10
parent: bifrost-integration-on-centos-10
required-projects:
- openstack/keystone
- openstack/ironic-prometheus-exporter
@@ -169,22 +198,20 @@
enable_prometheus_exporter: true
- job:
name: bifrost-integration-tinyipa-debian-bullseye
parent: bifrost-integration-tinyipa
nodeset: debian-bullseye
- job:
name: bifrost-integration-tinyipa-debian-bookworm
parent: bifrost-integration-tinyipa
name: bifrost-integration-on-debian-bookworm
parent: bifrost-integration
nodeset: debian-bookworm
timeout: 7200
- job:
name: bifrost-integration-redfish-vmedia-uefi-debian-bookworm
parent: bifrost-integration-tinyipa-debian-bookworm
parent: bifrost-integration-on-debian-bookworm
vars:
enable_tls: true
test_driver: redfish
use_vmedia: true
# Use Debian-based IPA which is smaller and compatible with GRUB 2.06
ipa_download_distro: "debian"
- job:
name: bifrost-tox-linters
@@ -220,7 +247,8 @@
- job:
name: bifrost-upgrade-keystone-ubuntu-noble
parent: bifrost-upgrade
nodeset: ubuntu-noble
nodeset: bifrost-ubuntu-noble-8GB
timeout: 7200
required-projects:
- openstack/keystone
vars:

View File

@@ -8,14 +8,14 @@
jobs:
- bifrost-tox-linters
- bifrost-integration-dhcp-centos-10
- bifrost-integration-dibipa-debian-centos-10
- bifrost-integration-tinyipa-centos-10
- bifrost-integration-tinyipa-ubuntu-noble
- bifrost-integration-tinyipa-ubuntu-jammy
- bifrost-integration-tinyipa-debian-bookworm
- bifrost-integration-tinyipa-keystone-centos-10
- bifrost-integration-tinyipa-keystone-ubuntu-noble
- bifrost-integration-tinyipa-keystone-ubuntu-jammy
- bifrost-integration-debian-ipasrc-on-centos-10
- bifrost-integration-on-centos-10
- bifrost-integration-on-ubuntu-noble
- bifrost-integration-on-ubuntu-jammy
- bifrost-integration-on-debian-bookworm
- bifrost-integration-keystone-on-centos-10
- bifrost-integration-keystone-on-ubuntu-noble
- bifrost-integration-keystone-on-ubuntu-jammy
- bifrost-integration-redfish-vmedia-uefi-centos-10
- bifrost-integration-redfish-vmedia-uefi-ubuntu-noble
- bifrost-integration-redfish-vmedia-uefi-ubuntu-jammy
@@ -30,7 +30,7 @@
voting: false
- bifrost-integration-dhcp-ubuntu-jammy:
voting: false
- bifrost-integration-dibipa-debian-ubuntu-jammy:
- bifrost-integration-debian-ipasrc-on-ubuntu-jammy:
voting: false
- bifrost-cli-ubuntu-jammy:
voting: false
@@ -62,14 +62,14 @@
jobs:
- bifrost-tox-linters
- bifrost-integration-dhcp-centos-10
- bifrost-integration-dibipa-debian-centos-10
- bifrost-integration-tinyipa-centos-10
- bifrost-integration-tinyipa-ubuntu-noble
- bifrost-integration-tinyipa-ubuntu-jammy
- bifrost-integration-tinyipa-debian-bookworm
- bifrost-integration-tinyipa-keystone-centos-10
- bifrost-integration-tinyipa-keystone-ubuntu-noble
- bifrost-integration-tinyipa-keystone-ubuntu-jammy
- bifrost-integration-debian-ipasrc-on-centos-10
- bifrost-integration-on-centos-10
- bifrost-integration-on-ubuntu-noble
- bifrost-integration-on-ubuntu-jammy
- bifrost-integration-on-debian-bookworm
- bifrost-integration-keystone-on-centos-10
- bifrost-integration-keystone-on-ubuntu-noble
- bifrost-integration-keystone-on-ubuntu-jammy
- bifrost-integration-redfish-vmedia-uefi-centos-10
- bifrost-integration-redfish-vmedia-uefi-ubuntu-noble
- bifrost-integration-redfish-vmedia-uefi-ubuntu-jammy