Commit graph

1252 commits

Author SHA1 Message Date
Achilleas Koutsou
39b0cf39d6 osbuild2: add support for LVM stages
Stage options implement a validate() method for checking values against
schema constraints.
2021-08-28 09:20:19 +02:00
Christian Kellner
df30073d65 distro/rhel85: pre-load uid/gid database for edge
When building RHEL for Edge commits and a parent together with an
URL was specified, add a `org.osbuild.ostree.passwd` stage which
then will pre-load the uid/gid database with the data from the
parent commit. This ensures that uids and gids do not change for
the "child" commit.
2021-08-27 12:56:54 +02:00
Christian Kellner
f8c8f28ac8 osbuild2: new org.osbuild.ostree.passwd stage
Add support for the `org.osbuild.ostree.passwd` and with it also
support for the `org.osbuild.ostree.checkout` input.
This stage can be used to pre-load the user and groups database
from an existing commit to ensure that uids/gids are stable.
2021-08-27 12:56:54 +02:00
Gianluca Zuccarelli
3b5783d8a0 distro: clean rhel90 image-installer package sets 2021-08-27 11:02:26 +02:00
Achilleas Koutsou
ca56714aa4 rhel85: use nginx with custom config for container
Running the container on Openshift requires that the process inside the
container run without special permissions.
Switching to nginx and setting the following options that don't require
root privileges:
- Port 8080 (> 1024)
- pid file in '/tmp' instead of the default '/run' path

Also, the log file is chmod-ed to be world writable. Nginx always writes
to the default log file on startup, even if a different log file path is
specified in the configuration.

See rhbz#1945238

Signed-off-by: Achilleas Koutsou <achilleas@koutsou.net>
2021-08-27 09:29:28 +02:00
Achilleas Koutsou
a717a7245b osbuild2: new stages
org.osbuild.chmod: runs chmod on one or more files
org.osbuild.nginx.conf: write nginx config file

Signed-off-by: Achilleas Koutsou <achilleas@koutsou.net>
2021-08-27 09:29:28 +02:00
Gianluca Zuccarelli
78e042b47a distro: rhel90 tar-installer image type 2021-08-26 01:52:03 +02:00
Jakub Rusz
37b14facd3 tests: update base tests for weldr-client
weldr-client returns different json structures than the original
composer-cli does. It is being replaced in RHEL-9 and these changes make
it possible to run the tests with both old composer-cli and
weldr-client.
2021-08-25 19:16:04 +02:00
Chloe Kaubisch
8c26614049 cloudapi: rework return values
Change instances of panic on error to return StatusInternalServerError
instead. Additionally change return code 200s to http.StatusOK.

Fixes #1606
2021-08-25 17:48:29 +02:00
Gianluca Zuccarelli
8374af3e6d distro: rhel90 custom filesystem support 2021-08-25 13:18:12 +02:00
Gianluca Zuccarelli
382b5370c0 distro: export common types
squash

unused type
2021-08-25 13:18:12 +02:00
Gianluca Zuccarelli
b782ecaf1f distro: rhel85 internal tests 2021-08-24 00:22:29 +02:00
Gianluca Zuccarelli
d4403a03c0 distro: rhel85 add sub mounts to allow list 2021-08-24 00:22:29 +02:00
Tomas Hozza
a8d503e5b9 RHEL-85/90: modify the x86_64 EC2 images dracut configuration
Change the x86_64-specific dracut configuration of RHEL-8.5 and RHEL-9.0
EC2 and AMI images to not include `xen-netfront` driver and add `nvme`
driver, which was previously not included. Since the configuration is no
longer Xen-specific, rename the configuration file to `ec2.conf`.

Justification:
There is no reason to put `xen-netfront` to initramfs as EC2 images don't
boot from network root. In addition, add `nvme` driver to handle the case
when initramfs is getting forcefully rebuild on a Xen instance (and not able
to boot on Nitro after that).

Related to https://issues.redhat.com/browse/COMPOSER-1096.

Signed-off-by: Tomas Hozza <thozza@redhat.com>
2021-08-23 16:01:11 +02:00
Christian Kellner
20258bd45e distro/rhel90: use unified grub config
Feodra 34 and thus RHEL 9 switched to a unified grub configuration,
which means that the main grub config is always located in the same
location, /boot/grub2/grub.cfg.[1] osbuild has used this scheme for
hybrid boot on x64 but not on pure efi systems like aarch64. The
new osbuild option `uefi.unified` was introduced to select that new
unified grug cfg scheme also for those, pure efi, systems. Use that.

[1] https://fedoraproject.org/wiki/Changes/UnifyGrubConfig
2021-08-23 13:48:26 +02:00
Christian Kellner
22bff1df71 osbuild2/grub2: add unified option for uefi
The `uefi.unified` option indicates whether the `org.osbuild.grub2`
will use the unified grub configration scheme[1] used by Fedora 34
and thus RHEL 9.
NB: This requires osbuild version >= 32.

[1] https://fedoraproject.org/wiki/Changes/UnifyGrubConfig
2021-08-23 13:48:26 +02:00
Christian Kellner
fcace40710 osbuild2/grub2: add install option for uefi
The `uefi.install` option indicates whether the `org.osbuild.grub2`
stage will copy the efi binaries from the build root to the `/boot`
directory in the tree.

Co-Developed-by: Achilleas Koutsou <achilleas@koutsou.net>
Co-Developed-by: Antonio Murdaca <runcom@linux.com>
2021-08-23 13:48:26 +02:00
Achilleas Koutsou
321dcc56bf distro/rhel90: copy devices and mounts changes
Rebase brings RHEL 9.0 definition with old Mounts and Devices. Changes
applied to new distro pipelines and stage options.
2021-08-21 13:39:10 +02:00
Achilleas Koutsou
745443181e osbuild2: remove stage-specific device types
Devices unlike stage options, shouldn't be stage specific.
There is only one type of device so far, the loopback device, which
is already defined as a separate type.

The top level Devices type is simply an alias to a Device map.

The mkfs stages require a single device with a specific key ("device").
These stages accept only one device in their NewStage() function for
convenience and create the Stage struct with the required key.

The zipl.inst stage requires a device labeled 'disk' as well as the rest
of the devices that correspond to each partition. The disk device is
passed to the New stage function separately and added to the Stage
devices with the required key.

Signed-off-by: Achilleas Koutsou <achilleas@koutsou.net>
2021-08-21 13:39:10 +02:00
Achilleas Koutsou
c74d13daf8 osbuild2: remove stage-specific mount types
Mounts unlike stage options, shouldn't be stage specific. We have
filesystem specific mount types, differentiated by their type string.
Mounts can define their own additional options if necessary.

The top level Mounts type is simply an alias to a Mount array.

Signed-off-by: Achilleas Koutsou <achilleas@koutsou.net>
2021-08-21 13:39:10 +02:00
Gianluca Zuccarelli
613ad0b862 disk: refactor partition table size & start points 2021-08-21 02:54:38 +02:00
Gianluca Zuccarelli
280e1b6e3d distro: rhel85 declarative partition tables 2021-08-21 02:54:38 +02:00
Gianluca Zuccarelli
e21eee273c disk: move partition creation to disk package 2021-08-21 02:54:38 +02:00
Gianluca Zuccarelli
87c176503a distro: rhel85 streamline to single function 2021-08-21 02:54:38 +02:00
Gianluca Zuccarelli
6c4da2b821 distro: rhel85 create partition helper functions 2021-08-21 02:54:38 +02:00
Gianluca Zuccarelli
346eef7477 distro: rhel85 validate /usr mountpoint size 2021-08-21 02:54:38 +02:00
Gianluca Zuccarelli
ad39aab854 distro: allow valid rhel85 mountpoint subdirs 2021-08-21 02:54:38 +02:00
Gianluca Zuccarelli
6abe88f36d distro: update rhel8.5 partition table creation 2021-08-21 02:54:38 +02:00
Gianluca Zuccarelli
dad535d295 distro: add mountpoint allow list for rhel8.5 2021-08-21 02:54:38 +02:00
sanne
9fab5def90 dbjobqueue: Reduce error noise in rollback check
If the transaction is already closed don't log the rollback failure as
an error, it means it was successfully committed.
2021-08-20 15:42:57 +02:00
Ondřej Budai
1e2ba4da64 upload/azure: use cheaper storage accounts
Previously, we used RAGRS which means that all our data was always replicated
to at least two regions for increased safety. This is cool but expensive, this PR
switches the API to use LRS that just uses one region.

Signed-off-by: Ondřej Budai <ondrej@budai.cz>
2021-08-17 17:51:23 +02:00
Tomas Hozza
a8ac012ebe rhel90: fix a typo in RHBZ number in a comment
Signed-off-by: Tomas Hozza <thozza@redhat.com>
2021-08-13 08:24:37 +02:00
Tomas Hozza
6edf4aad49 osbuild2: add prefix parameter to the fix-bls stage
The `fix-bls` stage supports a `prefix` argument, which was not
supported in composer. Specifying this argument is necessary in case the
`/boot` mountpoint is on a separate partition.

Add the `prefix` argument to the `fix-bls` stage. Amend unit tests.

The RHEL-8.5 and RHEL-9.0 `aarch64` `ec2` and `ami` images use partitioning
with `/boot` on a separate partition. Due to this, the pipeline must specify
a non-default prefix to the `fix-bls` stage.

Signed-off-by: Tomas Hozza <thozza@redhat.com>
2021-08-13 08:24:37 +02:00
Tomas Hozza
7ac1d68fb6 rhel85/90: allow specifying the boot partition for the grub2 stage
Specifying the boot partition filesystem UUID in grub2 stage is required
in case the `/boot` mountpoint is on a separate partition. This is the
case of RHEL-8.5 and RHEL-9.0 `ami` and `ec2` images.

Extend `disk.PartitionTable` with a new `BootPartition` method, which
returns a pointer to partition with FS mountpoint `/boot` if there is
such partition, or `nil` otherwise.

Extend the RHEL-8.5 and RHEL-9.0 code creating options structure for
grub2 osbuild stage to include the boot partition in case it has been
provided.

Signed-off-by: Tomas Hozza <thozza@redhat.com>
2021-08-13 08:24:37 +02:00
Tomas Hozza
a9c280a2fc rhel85/90: use random FS UUID for /boot partition on ec2 and ami
Signed-off-by: Tomas Hozza <thozza@redhat.com>
2021-08-13 08:24:37 +02:00
Tomas Hozza
4a83c0596f rhel85/90: don't use the same part UUID for /boot and / on ec2 images
Signed-off-by: Tomas Hozza <thozza@redhat.com>
2021-08-13 08:24:37 +02:00
Tomas Hozza
aa4886670a rhel85/90: fix FS type for /boot on ami and ec2 images
The `/boot` partition had incorrect FS type `EFI System partition`,
instead of `Linux filesystem data`. Fix this.

Signed-off-by: Tomas Hozza <thozza@redhat.com>
2021-08-13 08:24:37 +02:00
Ondřej Budai
3d7345d445 distro/rhel90: temporarily remove some packages from tar-installer
They don't exist in RHEL 9.0, we need to investigate.

Signed-off-by: Ondřej Budai <ondrej@budai.cz>
2021-08-11 11:22:59 +02:00
Ondřej Budai
9e4e734cd3 distro/rhel90: temporarily remove nss-altfiles from edge-commit
It isn't shipped in RHEL 9 yet, see:
https://bugzilla.redhat.com/show_bug.cgi?id=1985020

Signed-off-by: Ondřej Budai <ondrej@budai.cz>
2021-08-11 11:22:59 +02:00
Ondřej Budai
20ef62c3d1 distro/rhel90: add kernel-cmdline stage to all image types
Otherwise, kernel-install will just pick the cmdline from /proc/cmdline
that is actually the host's one. This way, I managed to leak the cmdline
from my Fedora running on btrfs to RHEL 9 image which led to a very weird
results.

Signed-off-by: Ondřej Budai <ondrej@budai.cz>
2021-08-11 11:22:59 +02:00
Ondřej Budai
374ac58f51 distro/rhel90: drop dhcp-client from the package set
It wasn't in the previous definition.

Signed-off-by: Ondřej Budai <ondrej@budai.cz>
2021-08-11 11:22:59 +02:00
Ondřej Budai
77306faeda distro/rhel90: drop net-tools from the package set
It wasn't in the previous definition.

Signed-off-by: Ondřej Budai <ondrej@budai.cz>
2021-08-11 11:22:59 +02:00
Ondřej Budai
7f039e7a7c distro/rhel90: do not exclude fwupd from qcow2
Otherwise, the image type cannot be depsolved because it's hard dependency
of kernel.

Signed-off-by: Ondřej Budai <ondrej@budai.cz>
2021-08-11 11:22:59 +02:00
Ondřej Budai
9bbacb885c distro/rhel90: drop dracut-norescue from package sets
It's no longer shipped in rhel-90, its functionality is now just a part
of the dracut package.

Signed-off-by: Ondřej Budai <ondrej@budai.cz>
2021-08-11 11:22:59 +02:00
Ondřej Budai
c1acdcc82b distro/rhel90: drop python36 from the basic packageset
python36 is not shipped in RHEL 9, RIP.

Signed-off-by: Ondřej Budai <ondrej@budai.cz>
2021-08-11 11:22:59 +02:00
Ondřej Budai
afa267cebc distro: fix distro mangling for rhel-90
We want to also mangle RHEL 9 in the same style as we do 8.4+.

RHEL 8.0 => rhel-80
RHEL 8.1 => rhel-81
etc

Signed-off-by: Ondřej Budai <ondrej@budai.cz>
2021-08-11 11:22:59 +02:00
Ondřej Budai
7b03db05c3 distro/rhel90: drop rhel86 alias
It doesn't ever make sense to alias 90 as 86.

Signed-off-by: Ondřej Budai <ondrej@budai.cz>
2021-08-11 11:22:59 +02:00
Ondřej Budai
6693ebc59b distro/rhel90: rename everything from 85 to 90
Signed-off-by: Ondřej Budai <ondrej@budai.cz>
2021-08-11 11:22:59 +02:00
Ondřej Budai
d6ade6386d distro/rhel90: copy everything from rhel85
rm internal/distro/rhel90/*
cp internal/distro/rhel85/* internal/distro/rhel90/

Signed-off-by: Ondřej Budai <ondrej@budai.cz>
2021-08-11 11:22:59 +02:00
Achilleas Koutsou
280b06381f distro/rhel85: bare metal package set
Used by the image-installer. The package set is intended to replicate a
default RHEL installation, but may need some changes.
2021-08-11 01:31:47 +02:00