Commit Graph

861 Commits

Author SHA1 Message Date
Steve Baker
4376f66407 rhel: work around RHEL-9 BLS issues
Similar to the CentOS-9-Stream fix [1] this change renames the default
BLS entry to match the current machine-id so that grub2-mkconfig calls
will refresh the kernel options.

However there is an additional issue with the rhel-9 base image. It is
unique in having a dedicated boot partition, so the path to the kernel
and initramfs don't include /boot. This results in an unbootable image
when /boot is a directory of the root partition.

These paths do not get corrected by calling grub2-mkconfig, so this
change performs a sed on the paths to fix them for a root partition
/boot.

[1] I327f5e7a95e47905c01138c8c4483f3f03e8efff
Change-Id: I37a1d310e1854f4a49725e355d484e456ea4fc7a
2022-02-22 13:43:18 +13:00
Ian Wienand
f44644f20f Update platform support to describe stable testing
The reality is that "stable" is what is tested.  This tries to give
enough info that users can ascertain what tests are running at any
given time and hence what elements are known to be working.

Additional, clarify the Fedora position in the README as now described
by above.

Closes: #1653561
Change-Id: Ifb91b9089790897861bd7e671c3dba59adac239d
2022-02-16 10:40:09 +11:00
Zuul
354417f3e6 Merge "Fallback to persistent netifs names with systemd" 2022-02-14 21:30:06 +00:00
Ian Wienand
79ea63f525 Futher bootloader cleanups
GRUB_OPTS has never been documented as externally available, and is
not used.  Assume it's value to simplify the code.

Move the grub version check separately, as we only support grub2

Remove references to buliding i386 images.  I don't image it works in
any way.

Remove ci.md, which is no longer relevant.

Refactor the test for "building BIOS image on EFI system" consiberably
after these changes.

Change-Id: Ia99687815667c3cf5e82cf21d841d3b1008b8fa9
2022-02-10 15:08:56 +11:00
Zuul
b43c5967e8 Merge "fedora-container: pull in glibc-langpack-en" 2022-02-09 09:35:47 +00:00
Riccardo Pittau
8401290976 Fallback to persistent netifs names with systemd
The dhcp-all-interfaces element does not work with the predictable names
scheme, fallback to the persistent names scheme as workaround.

Bug: 1960301

Change-Id: I117964a60615a5b7e9984f52f02cd018d1a48ed0
2022-02-09 10:17:49 +01:00
Zuul
b713c7fe6c Merge "Revert "Use rpm -e instead of dnf for cleaning old kernels"" 2022-02-09 07:50:24 +00:00
Zuul
f7c93fdca5 Merge "Remove extra if/then/else construct in pip element" 2022-02-09 05:19:36 +00:00
Zuul
2c159985a3 Merge "General improvements to the ubuntu-minimal docs" 2022-02-09 05:19:32 +00:00
Zuul
e9774d59bc Merge "Remove contrib/setup-gate-mirrors.sh" 2022-02-09 05:02:40 +00:00
Zuul
052a1df774 Merge "Cleanup more CentOS 8 bits" 2022-02-09 04:39:00 +00:00
Steve Baker
19ecc16d97 Revert "Use rpm -e instead of dnf for cleaning old kernels"
Using rpm -e to remove old kernels fails when other packages also
depend on the removed kernel.

This change reverts back to using dnf to remove the kernel, but also
sets the config value protect_running_kernel=False to avoid the issue
where the build host kernel version matches the version of the package
being deleted.

reverts commit 1ac31afd62.

Change-Id: Ie58630c23a34f2db34f3934abbd0c1076ab9d835
2022-02-09 03:33:34 +00:00
Zuul
2aa151b295 Merge "Add new container element - Rocky Linux" 2022-02-08 21:24:12 +00:00
Ian Wienand
2d36850877 fedora-container: pull in glibc-langpack-en
DevStack likes to use LC_ALL=en_US.UTF-8 because it does some
post-processing of output that depends on stable sort-order.  Pull in
the langpack package that provides this by default -- fedora-minimal
was doing this via yum-minimal so it makes sense to be equivalent.

Change-Id: I799bcfd73e1cb76ee1808b3441f40b0525e3c73d
2022-02-04 09:15:17 +11:00
Zuul
256eeaba40 Merge "Add 9-stream ARM64 testing" 2022-02-01 07:44:31 +00:00
Zuul
3d905e772e Merge "centos: do not use $releasever in .repo files" 2022-02-01 07:43:51 +00:00
Ian Wienand
88d9ef21e8 Remove contrib/setup-gate-mirrors.sh
AFAICS, use of this was removed with
I7f98a13091056809fedae8a5c8ee10b0ef8bbb2a and I can't see any other
references to it.  Correct the comment to describe how it works.

Change-Id: I5123729b7457dcbd4f4a51cff49904f7bd071e9b
2022-02-01 15:44:01 +11:00
Ian Wienand
62101b6aa5 Cleanup more CentOS 8 bits
This removes some testing and mirror setup bits and pieces for CentOS
8 that is now EOL.

Change-Id: I18dec9054cf9e023bdf086bda3ba253b28d6540d
2022-02-01 15:39:24 +11:00
398e07e6f2 Add new container element - Rocky Linux
Introduce new container image for Rocky Linux, a downstream clone of Red
Hat Enterprise Linux.

Keep non-voting in Check for a while before adding to any gate checks

Signed-off-by: Neil Hanlon <neil@shrug.pw>
Change-Id: Ib383f60bc23b434b400f85c376840a000cafc697
Related-Bug: https://review.opendev.org/805800/
2022-01-31 17:26:16 +00:00
Zuul
fefd078dd2 Merge "Fix openSUSE images and bump them to 15.3" 2022-01-31 04:08:06 +00:00
Ian Wienand
7e2735846c Add 9-stream ARM64 testing
Change-Id: If8b139c295f80a4c241f18f02c83e1e9a2e21656
2022-01-28 18:53:20 +11:00
Ian Wienand
d1b2a43a84 centos: do not use $releasever in .repo files
For centos stream, the $releasever is just the major version.  Several
of our .repo files are using $releasever in their path, and I think
that 8-stream installs are actually using 8 repos to install from.
For 9-stream, which doesn't have a corresponding 9, we're getting
errors enabling some of the aarch64 tests.

Replace all the $releasever expansions in the .repo files with the
exact version they are being installed for.  They don't need to be
generic; we are installing these specific repos for each DIB_RELEASE,
so they don't mix-and-match.

Change-Id: I48d438d8f51280cd060433fc8a67358d8345287f
2022-01-28 18:50:43 +11:00
Eduardo Santos
0f430664a2 Fix openSUSE images and bump them to 15.3
SUSE dropped OpenStack Cloud in 2019 [1], and as a result, some
OpenStack-related repositories were removed from openSUSE Download and
root filesystem images stopped being provided. This change deprecates
Leap releases before 15.3 and employs the extract-image script. It also
moves the extract-image script to the sysprep element, since now it's
also used by openSUSE-related elements.

Additionally, revert the "Remove opensuse related funtests" change [2]
so that the opensuse element is tested again and set the default Leap
release to 15.3.

[1] https://www.zdnet.com/article/suse-drops-openstacks/
[2] https://review.opendev.org/c/openstack/diskimage-builder/+/824002

Change-Id: I73d6323aa65cee69a55e54bc53ed682f096dfc89
2022-01-28 02:18:47 -03:00
Zuul
8690088ecd Merge "debian-minimal: remove old testing targets" 2022-01-27 23:53:26 +00:00
Zuul
6ca42f2a9d Merge "Add debian-bullseye-arm64 build test" 2022-01-27 23:49:09 +00:00
Ian Wienand
27feef8a26 debian-minimal: remove old testing targets
We've moved away from building "stable"/"testing" targets, as they
move over time so you never know what you're building.

These testing targets are unused, remove them to remove confusion.

Change-Id: I2a53f70ed07873b9a408972d2162b6c10b050db5
2022-01-25 15:54:39 +11:00
Ian Wienand
fa56c21109 Add debian-bullseye-arm64 build test
This does a basic vm build test of bullseye-arm64, which currently is
missing from the ARM64 testing.

To keep runtimes a bit more reasonable, split the job into two parts,
one for deb distros and one for rpm.

Change-Id: I0f28ff92e1b8d08d56b82b392e2cc355d567d007
2022-01-25 15:54:39 +11:00
Eduardo Santos
5779fa8525 General improvements to the ubuntu-minimal docs
This change:
- adds a note regarding an error when building focal ubuntu-minimal
  images on operating systems with older versions of debootstrap
- adds a reference to where the DIB_RELEASE variable definition can be
  found

Closes-Bug: #1941831
Change-Id: Ibc1e04dba0562c4f4909a8cb8af041d9b8ac45c4
2022-01-21 19:21:00 -03:00
Steve Baker
0d0f7f8075 Rename existing BLS entry with the new machine-id
This change replaces the call to grub2-switch-to-blscfg with a file
rename to update it to the actual machine-id.

grub2-switch-to-blscfg has issues in some build environments:
- When the build host is EFI boot, it assumes the image is, and
  fails when config file /etc/grub2-efi.cfg is missing
- With recent cento9 images and a fedora build host it fails with:
  grub2-probe: error: cannot find a device for / (is /dev mounted?)

Change-Id: I74ad800b702f2b491d958555cef8d7c7f63d74ac
2022-01-21 15:36:49 +13:00
Zuul
3df51c5279 Merge "Fixes for centos-9-stream efi behaviour" 2022-01-19 21:27:14 +00:00
Harald Jensås
9c5f5a56d4 Remove centos 9 and rhel 8 block in grub2 pkg-map
In the grub2 element the grub2-efi-x64-modules package
is missing in the centos 9 section, this cause a failure
because grub2 cannot find the neccecary files when
installing the bootloader on EFI systems.

It seems grub2-efi-x64-modules was not included in release
9, this is likely why the block was added initially without
this package. Since it is now there, the Centos 9 specific
block is no longer needed.

Removing the rhel 8 block as well, as it is identical to the
family "redhat" block i.e it is redundant.

Closes-Bug: #1957169
Change-Id: Ia6b0ecf0cd15fb23c6740543940ee513a8602afe
2022-01-17 23:40:24 +01:00
Steve Baker
a2cc17ad75 Fixes for centos-9-stream efi behaviour
This change removes the uninstall grub2-efi which was required for
prerelease rhel-9 images but now breaks current centos-9-stream
images. A different approach may be required for rhel-9 if the base
image remains different to centos-9-stream (such as populating the
empty /boot/efi partition from the base image)

This change also fixes the detection of whether this is an efi build
to check the block device instead of checking for whether a grub efi
package is installed. This fixes building a centos-9-stream whole-disk
image when package grub2-efi-x64 is installed but a legacy fallback
grub also needs to be installed.

Change-Id: I24baf553e1acd15a66737fc0b2a79d5335e28aa5
Partial-Bug: #1957789
2022-01-18 09:22:33 +13:00
Zuul
bef53f2674 Merge "enable cloud-init by default on systemd" 2022-01-14 19:47:41 +00:00
Steve Baker
9a7c107741 Use https for base centos image download
Change-Id: I85879ad784995405a1fa9fe8178e1b1d53d9e41a
2022-01-14 10:00:15 +13:00
Zuul
a32b969d95 Merge "Bump Ubuntu release to focal" 2022-01-11 11:21:13 +00:00
Zuul
83bbac0c2b Merge "centos: work around 9-stream BLS issues" 2022-01-11 09:38:35 +00:00
Dr. Jens Harbott
9d60202d1c Remove extra if/then/else construct in pip element
This was introduced in [0] but we can include it in the existing elif
series instead.

[0] I2b75afd310f009ae8614f6ca75bb984b56d25c45

Change-Id: Ibe05f367be997efbd8c5ebec77503ebd9cda1c8b
2021-12-29 16:43:00 +01:00
Ian Wienand
53d04d27c6 centos: work around 9-stream BLS issues
Per the bug mentioned upstream, grub2-mkconfig will currently not set
the kernel options for BLS entries prefixed with a machine-id
different to the running system.

This affects the centos element, as the upstream .qcow2 comes with a
pre-existing BLS entry but a blank machine-id.  This only affects
9-stream -- prior releases either don't use BLS or have entries
configured to use a common variable from grubenv which is updated
correctly.

We currently can not end-to-end test this in OpenDev because we run
our functional tests on Ubuntu Focal (they use devstack), whose kernel
can not read the XFS format on the 9-stream .qcow2.  This expands the
functional tests (that run on Debian Buster, with a later kernel) to
add the vm element, so the bootloader path is exercised (this requires
a block-device too).  This at least runs the bootloader install, we
can confirm the kernel options look right from the dumping provided
the logs.

Change-Id: I327f5e7a95e47905c01138c8c4483f3f03e8efff
2021-12-22 21:07:23 +11:00
Riccardo Pittau
f576658a4f Avoid unbound variable error when installing pip
The pip_args variable is not initialized when installing pip for
bullseye resulting in an unbound variable error when running
install_python3_pip on that debian version.
This patch fixes the issue moving pip_args inizialization to a common
place.

Change-Id: I1603c97871449b4f73e3062a705d655e9454bf33
2021-12-20 16:06:44 +01:00
Matthew Thode
902b7454c3
enable cloud-init by default on systemd
Change-Id: Ie908f7c5b9ea2c1b97daf149ef70f4c68ddf73a0
Signed-off-by: Matthew Thode <mthode@mthode.org>
2021-12-18 17:51:18 -06:00
Dr. Jens Harbott
f884b626b2 Fix failure in pip element
A lack of space between package names was causing apt to fail.

[0] I2b75afd310f009ae8614f6ca75bb984b56d25c45

Change-Id: Ia7e005c2f583037ee44a3c364e3b8d79d51e03a2
2021-12-18 12:44:34 +01:00
Zuul
6ae099f464 Merge "Install only python3 pip in debian bullseye" 2021-12-16 06:36:19 +00:00
Riccardo Pittau
4f151aeeb5 Install only python3 pip in debian bullseye
Debian bullseye has removed python-pip and python-virtualenv
from its repos, let's install only pip and virtualenv python3 modules.

Also split pip installation based on python2 and python3 for
debian-based distributions.

Change-Id: I2b75afd310f009ae8614f6ca75bb984b56d25c45
2021-12-10 15:11:17 +01:00
Ian Wienand
0bf80735a7 Use OpenDev mirrors for 8-stream CI builds
Change-Id: Ief335cf80fb5d796f6c31f6956e9bc5f790eca93
2021-12-10 17:26:34 +11:00
Ian Wienand
402a7fa2f9 Test 8-stream aarch64 build
Change-Id: I1aea7791b5b9af257a3c54e377dbdcbb8bfe9028
2021-12-08 13:30:42 +11:00
Zuul
a2b8d4d846 Merge "Update keylime-agent and tpm-emulator elements" 2021-12-07 04:29:36 +00:00
Zuul
b22161c116 Merge "Disable all repositories after attaching a pool" 2021-12-06 20:19:59 +00:00
Zuul
86e3d632fa Merge "Document EFI elements requirements" 2021-12-06 19:58:16 +00:00
Piotr Parczewski
f49dba8f62 Document EFI elements requirements
Change-Id: I6b47d44c86a11dfc71b7adf0d9bb27f5177717cb
2021-11-26 08:46:42 +01:00
Ian Wienand
2d47d4157c Fix BLS based bootloader installation
This reverts I2701260d54cf6bc79f1ac765b512d99d799e8c43,
Idf2a471453c5490d927979fb97aa916418172153 and part of
Iecf7f7e4c992bb23437b6461cdd04cdca96aafa6 which added special flags to
update kernels via grubby.

These changes actually ended up reverting the behaviour on Fedora 35,
which is what led me to investigate what was going on more fully.

All distros still support setting GRUB_DEVICE in /etc/default/grub;
even the BLS based ones (i.e. everything !centos7).

The implementation *is* confusing -- in earlier distros each BLS entry
would refer to the variable $kernelopts; which grub2-mkconfig would
write into /boot/grub2/grubenv.  After commit [1] this was reverted,
and the kernel options are directly written into the BLS entry.

But the real problem is this bit from [2]

 get_sorted_bls()
 {
     if ! [ -d "${blsdir}" ] || ! [ -e /etc/machine-id ]; then
        return
     fi
     ...
     files=($(for bls in ${blsdir}/${machine_id}-*.conf; do
     ...
 }

i.e., to avoid overwriting BLS entries for other OS-boots (?),
grub2-mkconfig will only update those BLS entries that match the
current machine-id.

The problem for DIB is that we are clearing the machine-id early in
finalise.d/01-clear-machine-id, but then running the bootloader update
later in finalise.d/50-bootloader.

The result is that the bootloader entry generated when we installed
the kernel (which guessed at the root= device, etc.) is *not* updated.
Even more annoyingly, the gate doesn't pick this up -- because the
gate tests run on a DIB image that was booted with
"root=LABEL=cloudimg-rootfs" the kernel initially installed with
"install-kernel" (that we never updated) is actually correct.  But
this fails when built on a production host.

Thus we don't need any of the explicit grubby updates; these are
reverted here.  This moves the machine-id clearing to after the
bootloader setup, which allows grub2-mkconfig to setup the BLS entries
correctly.

[1] 4a742183a3
[2] https://src.fedoraproject.org/rpms/grub2/blob/rawhide/f/0062-Add-BLS-support-to-grub-mkconfig.patch

Depends-On: https://review.opendev.org/c/zuul/nodepool/+/818705
Change-Id: Ia0e49980eb50eae29a5377d24ef0b31e4d78d346
2021-11-25 14:26:23 +11:00