We jubilantly announce the release of: bifrost 20.0.0 This release is part of the gazpacho release series. The source is available from: https://opendev.org/openstack/bifrost Download the package from: https://tarballs.openstack.org/bifrost/ Please report issues through: https://bugs.launchpad.net/bifrost/+bugs For more details, please see below. 20.0.0 ^^^^^^ New Features ************ * Adds the deployment of an OCI image registry with the eventual goal for artifacts to be hosted by the image registry in the default case for Bifrost. This feature is now installed by default utilizing the "bifrost-registry-install" role. * Adds variables to configure authentication parameters in the "bifrost-ironic-install" role, where IPA images are downloaded. The new variables are "ipa_download_url_username", "ipa_download_url_password", "ipa_download_force_basic_auth" and "ipa_download_unredirected_headers". Ramdisk and kernel images can be separately configured using "ipa_ramdisk"/"ipa_kernel" prefixes, e.g. "ipa_ramdisk_download_url_username". See documentation of the get_url and uri Ansible modules for more details on how to use these variables. * The OCI image registry installation can now be disabled using the "enable_registry" variable or the "--disable-registry" CLI flag. The registry remains enabled by default to maintain backward compatibility. To disable during installation: * CLI: "bifrost-cli install --disable-registry" * Ansible: "-e enable_registry=false" * Adds support for using Open vSwitch (OVS) as a virtual switch for testing environments. Setting "test_vm_switch_type" to "ovs" creates 3 separate VLANs for comprehensive network testing: one dedicated as an inspection network, another for the final tenant network, and a third for all other network types (cleaning, rescuing, servicing, etc.). This enhancement enables testing of the standalone networking feature with proper VLAN configuration support through the networking generic switch driver. * Added support for testing the new standalone Ironic networking service. When "enable_ironic_networking" is set to "True", the standalone networking service is launched alongside the main Ironic service using the "ironic-networking" networking driver. Generated inventory files now include port and driver information to utilize this new functionality. This feature enables testing of advanced network configuration capabilities in standalone Ironic deployments. Known Issues ************ * When testing standalone Ironic networking functionality, if "test_vm_use_static_local_link_connection_info" is set to false, then manual inspection must be performed on nodes prior to deployment to ensure "local_link_connection" information is available for switch port identification. Without this information, nodes may be silently provisioned on incorrect VLANs. * The OVS bridge type must be used for testing this functionality. Upgrade Notes ************* * The default IPA ramdisk used in bifrost is now debian DIB based which is smaller and compatible with more versions of GRUB. * 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. * Supports for installing or using ironic-inspector has been completely removed. * Python 3.9 is not supported anymore. Bug Fixes ********* * Fixes the "dnsmasq" DHCP provider on the Debian family of operating systems by providing the correct dnsmasq leases file path. * The ILO driver has been removed as of the 2026.1 release. The 'ilo' and 'ilo5' hardware types have been removed from the default 'enabled_hardware_types' list and all related configuration options, dependencies, and interface support have been removed. Other Notes *********** * Previously, an "/etc/ironic/htpasswd" file was only generated when Keystone was not used as an authentication source. This artifact is now always generated for OCI image registry support. Changes in bifrost 19.3.0..20.0.0 --------------------------------- 01d8fcac Add support for standalone ironic networking 63f280e1 Upload to and use artifact from OCI registry 0beaaa71 Replace passlib with direct bcrypt for htpasswd generation 024a7bd8 Upload a disk image to OCI 96614f61 Remove unused sphinxcontrib-blockdiag 7acb2d40 Remove url tags from README 9dbf0fb8 tox: Drop basepython 3bae0dff CI: Fix previous release for SLURP upgrade jobs 35245e6f Add the ability to override 'disable_boot_timeout' 7c238ceb Provide a means to disable the registry service install e24c8930 CI: Make bifrost-upgrade-keystone-centos-10 voting aea3be4a Fix path to bifrost.crt with non-default tls_root 5b1728ed Document IPA image download options 77932a39 bifrost-registry-install: install the ORAS client 06308055 add an OCI artifact registry 233cbda7 Remove unused tinyipa CI jobs 2e10dad5 ci: undo non-voting for centos10 upgrade 3a78fead Centos: set masked: false for firewalld 0c3020cd Switch IPA ramdisk to debian DIB based 6f1fa327 Remove tinyipa support and switch to DIB-based IPA 1466c910 ILO driver retirement 71bebff8 Add support for OVS as a virtual switch a445fd1d Fix the dnsmasq.leases location on Debian systems b7bb21c6 [CI] upgrade from 2025.2 ac48e6fc reno: Update master for unmaintained/2024.1 01421632 Clarify correct usage of 'install --testenv' in bifrost-cli docs ccc614e4 verify creation of test VMs during testenv setup 12fa6197 Remove support for Python 3.9 2cefef38 Add support for Rocky Linux 10 image download 4143fa7e Remove the ability to install and use ironic-inspector 8174d8f1 Recover the Redfish UEFI CentOS 10 job 01e35239 CI: Make bifrost-upgrade-keystone-centos-10 voting f587a56c Update master for stable/2025.2 00171546 Support IPA download with authenticated requests 3e7754cd bug: drop --develop flag from testenv usage 2c5f1765 Remove ancient Python 3.6 tox test dce6f7a8 Replace CLA instructions with DCO Diffstat (except docs and test files) ------------------------------------- CONTRIBUTING.rst | 12 +- README.rst | 5 +- bifrost/cli.py | 7 +- playbooks/ci/run.yaml | 6 +- playbooks/install.yaml | 2 + playbooks/roles/bifrost-create-dib-image/README.md | 92 ++++ .../bifrost-create-dib-image/defaults/main.yml | 12 + .../roles/bifrost-create-dib-image/tasks/main.yml | 14 + .../tasks/upload_to_registry.yml | 122 +++++ playbooks/roles/bifrost-create-vm-nodes/README.md | 49 ++ .../bifrost-create-vm-nodes/defaults/main.yml | 24 +- .../handlers/main.yml} | 21 +- .../bifrost-create-vm-nodes/tasks/create_vm.yml | 86 ++- .../roles/bifrost-create-vm-nodes/tasks/main.yml | 3 + .../tasks/prepare_libvirt.yml | 19 +- .../bifrost-create-vm-nodes/tasks/prepare_ovs.yml | 120 +++++ .../templates/ovs-net.xml.j2 | 6 + .../templates/testvm.xml.j2 | 11 + .../roles/bifrost-create-vm-nodes/vars/debian.yml | 5 + .../roles/bifrost-create-vm-nodes/vars/redhat.yml | 7 + .../roles/bifrost-deploy-nodes-dynamic/README.md | 20 + .../bifrost-deploy-nodes-dynamic/defaults/main.yml | 6 + .../bifrost-deploy-nodes-dynamic/tasks/main.yml | 38 +- playbooks/roles/bifrost-ironic-install/README.md | 41 +- .../roles/bifrost-ironic-install/defaults/main.yml | 164 ++++-- .../bifrost-ironic-install/tasks/bootstrap.yml | 56 +- .../tasks/create_tftpboot.yml | 11 +- .../tasks/download_ipa_image.yml | 16 + .../bifrost-ironic-install/tasks/hw_types.yml | 7 - .../tasks/inspector_bootstrap.yml | 156 ------ .../roles/bifrost-ironic-install/tasks/install.yml | 5 - .../tasks/ironic_networking_bootstrap.yml | 138 +++++ ...ector_start.yml => ironic_networking_start.yml} | 20 +- .../tasks/keystone_setup_inspector.yml | 144 ----- .../roles/bifrost-ironic-install/tasks/main.yml | 7 + .../bifrost-ironic-install/tasks/ovs_bootstrap.yml | 62 +++ .../tasks/setup_firewalld.yml | 1 + .../roles/bifrost-ironic-install/tasks/start.yml | 7 +- .../bifrost-ironic-install/tasks/validate.yml | 36 -- .../bifrost-ironic-install/tasks/vendor_deps.yml | 7 - .../templates/default-boot-ipxe.j2 | 10 + .../templates/dnsmasq.conf.j2 | 4 + .../templates/inspector-default-boot-ipxe.j2 | 10 - .../templates/ironic-inspector.conf.j2 | 96 ---- .../templates/ironic-networking-switches.conf.j2 | 30 ++ .../templates/ironic-networking.conf.j2 | 102 ++++ .../templates/ironic.conf.j2 | 85 +-- .../nginx_conf.d_bifrost-httpboot.conf.j2 | 2 +- .../templates/nginx_conf.d_bifrost-ironic.conf.j2 | 19 - .../templates/ovs-vlans-dhcp.conf.j2 | 12 + .../templates/systemd_template.j2 | 3 +- .../roles/bifrost-ironic-install/vars/debian.yml | 1 + .../roles/bifrost-ironic-install/vars/redhat.yml | 1 + .../defaults/main.yml | 2 - .../tasks/validate.yml | 8 - .../templates/clouds.yaml.j2 | 8 - .../bifrost-keystone-install/tasks/upgrade.yml | 2 +- .../templates/logrotate.conf.j2 | 5 - playbooks/roles/bifrost-prep-for-install/README.md | 6 - .../bifrost-prep-for-install/defaults/main.yml | 26 +- playbooks/roles/bifrost-registry-install/README.md | 68 +++ .../bifrost-registry-install/defaults/main.yml | 56 ++ .../roles/bifrost-registry-install/meta/main.yml | 19 + .../bifrost-registry-install/tasks/bootstrap.yml | 111 ++++ .../bifrost-registry-install/tasks/install.yml | 9 + .../tasks/install_oras.yml | 48 ++ .../roles/bifrost-registry-install/tasks/main.yml | 29 + .../tasks/setup_firewalld.yml | 27 + .../roles/bifrost-registry-install/tasks/start.yml | 11 + .../bifrost-registry-install/tasks/validate.yml | 16 + .../templates/registry-config.yml.j2 | 30 ++ .../templates/registry.service.j2 | 30 ++ .../roles/bifrost-registry-install/vars/debian.yml | 5 + .../roles/bifrost-registry-install/vars/redhat.yml | 3 + playbooks/roles/bifrost-test-inspection/README.md | 2 +- playbooks/roles/bifrost-test-networking/README.md | 35 ++ .../bifrost-test-networking/defaults/main.yml | 6 + .../roles/bifrost-test-networking/meta/main.yml | 2 + .../roles/bifrost-test-networking/tasks/main.yml | 70 +++ playbooks/test-bifrost.yaml | 8 + .../notes/adds-OCI-registry-83f09e2878b436f4.yaml | 12 + .../notes/debian-default-2bb1d335f3ea515b.yaml | 5 + .../notes/dnsmasq-leases-88ece318b47e4465.yaml | 5 + .../notes/goodbye-tinyipa-a5efe0e972647616.yaml | 16 + .../notes/ipa-download-auth-c7ae9373b08dc514.yaml | 14 + .../notes/no-inspector-2995fa195b715fe4.yaml | 5 + ...optional-registry-install-95b69d1e03337b9e.yaml | 12 + ...vs-virtual-switch-support-36b3693a1076e2f6.yaml | 10 + .../notes/remove-py39-5e2f5eacb4380407.yaml | 4 + .../notes/retire-ilo-driver-da4317f3b1806ccd.yaml | 7 + ...ndalone-ironic-networking-5f5d71e2044eef88.yaml | 20 + releasenotes/source/2024.1.rst | 2 +- releasenotes/source/2025.2.rst | 6 + releasenotes/source/index.rst | 1 + requirements.txt | 1 - scripts/collect-test-info.sh | 3 +- scripts/install-deps.sh | 6 - scripts/test-bifrost.sh | 27 +- setup.cfg | 3 +- tox.ini | 6 - upper-constraints-cs9-py39.txt | 599 --------------------- zuul.d/bifrost-jobs.yaml | 115 ++-- zuul.d/project.yaml | 59 +- 109 files changed, 2257 insertions(+), 1517 deletions(-) Requirements updates -------------------- diff --git a/requirements.txt b/requirements.txt index 05889903..467ed503 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8 +7,0 @@ PyYAML>=3.12 # MIT -passlib>=1.7.2 # BSD