Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion bifrost/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand Down
1 change: 0 additions & 1 deletion doc/source/user/architecture.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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).
Expand Down
33 changes: 1 addition & 32 deletions doc/source/user/troubleshooting.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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/.
Expand Down Expand Up @@ -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)
******************************************************
Expand Down
2 changes: 1 addition & 1 deletion playbooks/roles/bifrost-create-vm-nodes/defaults/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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 '' }}"
Expand Down
15 changes: 2 additions & 13 deletions playbooks/roles/bifrost-ironic-install/defaults/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,6 @@ firewalld_internal_zone: bifrost
ipa_file_protocol: "http"

ipa_upstream_release: "master"
use_tinyipa: false

ipxe_efi_binary: snponly.efi

Expand All @@ -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"
Expand Down
16 changes: 16 additions & 0 deletions releasenotes/notes/goodbye-tinyipa-a5efe0e972647616.yaml
Original file line number Diff line number Diff line change
@@ -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.
4 changes: 1 addition & 3 deletions scripts/test-bifrost.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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}" \
Expand Down Expand Up @@ -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} \
Expand Down
116 changes: 72 additions & 44 deletions zuul.d/bifrost-jobs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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:
Expand All @@ -63,36 +69,64 @@
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

#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
parent: bifrost-base
timeout: 3600
vars:
noauth_mode: false
name: bifrost-integration-tinyipa-ubuntu-jammy
parent: bifrost-integration
nodeset: ubuntu-jammy
timeout: 7200

- job:
name: bifrost-integration-tinyipa-ubuntu-jammy
parent: bifrost-integration-tinyipa
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
vars:
enable_keystone: true
enable_tls: true
test_driver: redfish
enable_prometheus_exporter: true

- job:
name: bifrost-integration-keystone-on-ubuntu-jammy
parent: bifrost-integration
nodeset: ubuntu-jammy
timeout: 7200
required-projects:
- openstack/keystone
- openstack/ironic-prometheus-exporter
Expand All @@ -103,62 +137,57 @@
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-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
use_vmedia: true

- 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
use_vmedia: true

- 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
Expand All @@ -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
Expand Down Expand Up @@ -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:
Expand Down
Loading