Commit graph

2566 commits

Author SHA1 Message Date
Antonio Murdaca
feec6ce63e inject blueprint's kargs into edge raw image
Signed-off-by: Antonio Murdaca <antoniomurdaca@gmail.com>
2023-01-17 14:02:02 +01:00
Antonio Murdaca
cca0e773f6 support ignition in edge simplified-installer and raw-image
Signed-off-by: Antonio Murdaca <runcom@linux.com>
Signed-off-by: Antonio Murdaca <antoniomurdaca@gmail.com>
Signed-off-by: Irene Diez <idiez@redhat.com>
Co-authored-by: Irene Diez <idiez@redhat.com>
Signed-off-by: Antonio Murdaca <antoniomurdaca@gmail.com>
2023-01-17 14:02:02 +01:00
Antonio Murdaca
c2b4caaa66 support kargs in edge blueprint
Signed-off-by: Antonio Murdaca <antoniomurdaca@gmail.com>
2023-01-17 14:02:02 +01:00
Gianluca Zuccarelli
25faf5ab60 internal/prometheus: remove compose fail metrics
We have switched how 5xx errors are being recorded
internally and we are now recording all failures
for all endpoints. As a result, a dedicated metric
only for compose failures is no longer required.
2023-01-12 12:55:01 +01:00
Gianluca Zuccarelli
08aa1e99a1 worker/server: log unresponsive job removal
Re-add the logging for when unresponsive heartbeats
are being removed so we can verify that they
are correctly being logged as 5xx errors.
2023-01-10 09:29:33 +01:00
Ondřej Budai
b997142db0 common: merge all *ToPtr methods to one generic ToPtr
After introducing Go 1.18 to a project, it's required by law to convert at
least one method to a generic one.

Everyone hates IntToPtr, StringToPtr, BoolToPtr and Uint64ToPtr, so let's
convert them to the ultimate generic ToPtr one.

Signed-off-by: Ondřej Budai <ondrej@budai.cz>
2023-01-09 14:03:18 +01:00
Ondřej Budai
0359647a82 go.mod: update to Go 1.18
Fedora 35 support was dropped, so we can update to a newer Go.

Stable RHEL 8 and 9 and Fedora 36 ships Go 1.18, so let's switch to it.

"//go:build" directives are now apparently enforced by go fmt, so that's why
there were added.

Also, all the github actions were adjusted to use Go 1.18.

Signed-off-by: Ondřej Budai <ondrej@budai.cz>
2023-01-09 14:03:18 +01:00
Ondřej Budai
4bafe1ead9 remove Fedora 35 support
Fedora 35 is going EOL on Tue 2022-12-13. At the time of writing this commit
message, that's the next day. As we do releases on Wednesdays, the next
release will never find its way to F35 and thus, there's no point in keeping
support for it.

Let's delete everything that relates to Fedora 35. If there's something that
cannot be deleted (e.g. CI containers based on F35), let's upgrade it to F37.

TestCrossArchDepsolve now uses CentOS Stream 8 because RHEL 8.4 cannot read
F37 repository metadata. This is a similar issue to
https://bugzilla.redhat.com/show_bug.cgi?id=2004853 . Basically, newer
repositories can be only read by libmodulemd >= 2.11.

Signed-off-by: Ondřej Budai <ondrej@budai.cz>
2023-01-06 11:34:50 +01:00
Achilleas Koutsou
e217c6069e distro/rhel9: update image type lists in tests 2022-12-16 15:40:09 +01:00
Achilleas Koutsou
d3b0b2218b distro/rhel9: add Azure aarch64 platform and include image types
Co-Authored-By: Christian Kellner <christian@kellner.me>
2022-12-16 15:40:09 +01:00
Achilleas Koutsou
2a0e935fc3 distro/rhel9: add partition table for aarch64 azure-rhui
Copy of the x86_64 partition table with BIOS partition removed.

Co-Authored-By: Christian Kellner <christian@kellner.me>
2022-12-16 15:40:09 +01:00
Achilleas Koutsou
617ec35c57 distro/rhel9: clarify partition table error message
The previous error didn't make it clear where the issue was coming from.
Now it explains that the problem is that a partition table for a given
architecture isn't specified on the image type.

Co-Authored-By: Christian Kellner <christian@kellner.me>
2022-12-16 15:40:09 +01:00
Achilleas Koutsou
ee7429880f distro/rhel9: remove arch-dependent packages from Azure common
These are already added by the platform.

Co-Authored-By: Christian Kellner <christian@kellner.me>
2022-12-16 15:40:09 +01:00
Irene Diez
76728818c9 internal/distro/rhel9: handle ignition.embedded for edge
Signed-off-by: Irene Diez <idiez@redhat.com>
2022-12-15 11:34:17 +00:00
Irene Diez
428dd169e4 internal/distro/rhel9: handle ignition.firstboot for edge
Signed-off-by: Irene Diez <idiez@redhat.com>
2022-12-15 11:34:17 +00:00
Irene Diez
2f2ef709cd internal/blueprint: add ignition customizations
This allows a user to configure the system via `edge-simplified-installer`
using an ignition configuration specified in the blueprint.

This ignition config can be embedded in the ISO as a Base64
encoded file (ignition.embedded.data) or as a file
containing the URL where the ignition config file is served
(ignition.embedded.url).

The user can also instead specify an URL serving an ignition
config file that will passed as a karg and be fetched at first
boot (ignition.firstboot.url).

Signed-off-by: Irene Diez <idiez@redhat.com>
2022-12-15 11:34:17 +00:00
Achilleas Koutsou
83cb043daa distro/rhel9: conditionally enable users module for edge installer
In RHEL 9, for the edge installer, only enable the users module when it
is required for creating a user specified in the blueprint or request.
2022-12-13 20:33:27 +00:00
Achilleas Koutsou
a0528d2e53 osbuild: remove 'users' boolean argument from NewAnacondaStageOptions()
Drop the argument altogether.
2022-12-13 20:33:27 +00:00
Achilleas Koutsou
a63fe649cb manifest: don't use the users flag in NewAnacondaStageOptions()
Before we only had one optional kickstart module we would enable that
was Users, so we just had a single boolean for adding it.  Now that we
often need to add multiple modules, keep the default ones in the
NewAnacondaStageOptions() function, but only have a single argument for
adding additional, optional modules.  If the user module needs to be
enabled, add it to the list of additional ones.
2022-12-13 20:33:27 +00:00
Achilleas Koutsou
6bfa3dd366 image: add ISOLinux stage only for x86_64
The previous fix (9e66ee13e7) only fixed
half the problem with this bug.  The ISOLinux stage was still added to
the iso-tree pipeline for Anaconda builds.

This is now removed.
2022-12-13 21:14:55 +01:00
Antonio Murdaca
6d15dc144c distro/rhel: make edge images properly sysroot.readonly=true
Make edge raw images (both the raw image type and the same in the edge
simplified installer) mount the /sysroot as read-only.  This was already
done in Fedora 37+ (547f7a66b3).

Copied commit message from 6f89e9d499 to a
comment in all places where the accompanying "rw" kernel option is set
explaining the requirement, since the option is counter-intuitive.

Signed-off-by: Antonio Murdaca <runcom@linux.com>
Signed-off-by: Antonio Murdaca <antoniomurdaca@gmail.com>
Co-Authored-By: Achilleas Koutsou <achilleas@koutsou.net>
2022-12-13 13:24:20 +01:00
Achilleas Koutsou
eaf3dc2ecc manifest: always add inst.stage2 kernel option for Anaconda
The bootiso.mono stage in osbuild that we used until recently adds the
inst.stage2 option unconditionally [1] whereas the current grub2.iso
stage that we use now doesn't.

[1] 8511add169/stages/org.osbuild.bootiso.mono (L369)
2022-12-13 07:49:32 +00:00
Sanne Raymaekers
369f237d89 gen-manifests: add ostree rhsm option 2022-12-12 13:42:52 +01:00
Sanne Raymaekers
cb127cd1b0 distro/rhel9: add consumer certificates when ostree rhsm is true 2022-12-12 13:42:52 +01:00
Achilleas Koutsou
19ec3be6bd manifest: return inline FDO cert from CoreOSInstaller pipeline
The CoreOSInstaller pipeline supports adding inline data to the tree for
the FDO cert.  This needs to be returned by the pipeline object via the
getInline() method to attach the necessary data to the Sources array in
the manifest.
2022-12-11 12:37:37 +00:00
Achilleas Koutsou
2784d5a228 distro/rhel8: rename raw image in simplified installer
Rename the raw image embedded in the simplified-installer ISO to
image.raw.xz for RHEL 8.  This is the same name that's used for the raw
image when built on its own (as edge-raw-image).
The change is made for consistency with RHEL 9 and Fedora as well as for
consistency with the edge-raw-image.
2022-12-11 12:37:37 +00:00
Achilleas Koutsou
3fa2da3450 distro/rhel9: remove unused functions
- Pipelines.
- Stage options.
- Manifest and PackageSets implementations for ImageType.
2022-12-11 12:37:37 +00:00
Achilleas Koutsou
b0c67b3e40 rhel9: update edge simplified installer to new definition
Add the image function and remove the pipeline function.
Remove the build package set: build packages are added to the pipelines
on-demand based on platform, environment, and stage requirements.
2022-12-11 12:37:37 +00:00
Achilleas Koutsou
f68ac1d163 image: new image kind: OSTreeSimplifiedInstaller
Define the OSTreeSimplifiedInstaller ImageKind.
This is the top-level image definition.
It uses the raw image pipelines, iso pipelines, and the new coreos
installer pipelines.
2022-12-11 12:37:37 +00:00
Achilleas Koutsou
8d36e048bc image: separate raw image pipeline from InstantiateManifest
Make the pipeline code a reusable function so we can use it in multiple
images (edge-raw-image and edge-simplified-installer).
2022-12-11 12:37:37 +00:00
Achilleas Koutsou
bc4583eb81 manifest: new COI bootiso-tree pipeline
New bootiso-tree pipeline specific to the CoreOS Installer.

This is very similar to the Anaconda bootiso-tree pipeline.  Usually we
generalise these pipelines to support both installers.  The bootiso-tree
is different enough that generalising the one for Anaconda would make it
harder to work with.
2022-12-11 12:37:37 +00:00
Achilleas Koutsou
bd448edad0 manifest: support adding per-distro dracut modules to installers
Different distros and image types have different dracut modules
available and enabled.  Set these at the distro level and push them down
through the appropriate manifests, pipelines, and stages.

Added to both anaconda and coreos installers.
2022-12-11 12:37:37 +00:00
Achilleas Koutsou
9511c76063 manifest: use options from fdo package instead of blueprint
Use the internal representation of the FDO options in on the
CoreOSInstaller pipeline instead of the blueprint.
2022-12-11 12:37:37 +00:00
Achilleas Koutsou
836dddbb33 New package: fdo
Defines an fdo.Options struct for the internal representation of the FDO
options.  It can be easily converted from the blueprint FDO
customizations and is added to OSCustomizations in the pipeline
generators, which in turn define stage options.
2022-12-11 12:37:37 +00:00
Achilleas Koutsou
edce65eabd manifest: move kernel option handling outside EFIBootTree
The kernel arguments for the EFIBootTree depend on the type of ISO we're
building, the payload, and the location of the kickstart file if any.
Instead of setting multiple fields on the object, most of which would be
mutually exclusive, set the kernel arguments from the image manifest
generator function which has all the information.
2022-12-11 12:37:37 +00:00
Achilleas Koutsou
fae824d574 manifest: rename ISOTree to AnacondaISOTree
The ISOTree struct and pipeline generator is specific to Anaconda.
Rename it for clarity and to differentiate from any other ISO tree
pipeline.
2022-12-11 12:37:37 +00:00
Achilleas Koutsou
3d1f283dab manifest: add any pipeline to ISO pipeline
Support adding any pipeline as the tree for the ISO.

The existing ISOTree (bootiso-tree) pipeline is specific to Anaconda.
This change will allow the ISO (bootiso) pipeline to be created with any
pipeline, so we can add an ISO tree that is specific to the CoreOS
Installer.
2022-12-11 12:37:37 +00:00
Achilleas Koutsou
115c0717c4 manifest: remove Anaconda pipeline from EFIBootTree
Remove dependence of EFIBootTree pipeline (efiboot-tree) on an Anaconda
pipeline.  The Anaconda pipeline was used to get the product and version
strings, so we pass those in instead.
This way, we an use the pipeline without needing an Anaconda pipeline.
The EFI tree shouldn't depend on an installer (or any) pipeline.
2022-12-11 12:37:37 +00:00
Achilleas Koutsou
2b73a3624c manifest: add any pipeline to ISO rootfs
Support adding any pipeline as the source of the ISO rootfs.
This will support both Anaconda and COI, or anything else we might need
in the future.
2022-12-11 12:37:37 +00:00
Achilleas Koutsou
c8710e407c manifest: new CoreOS Installer pipeline
New CoreOS Installer (coi-tree) pipeline.
Based on the existing pipeline in rhel9/pipelines.
2022-12-11 12:37:37 +00:00
Achilleas Koutsou
b8ec2cb09d distro/rhel9: remove unnecessary appendRHSM()
Has no effect since it's already applied by previously called functions.
2022-12-11 12:37:37 +00:00
Ondřej Budai
ff21f2935f distro/rhel9: fix /usr/sbin/zipl unavailable in the buildroot
The big rewrite of rhel9 distro omitted installing s390utils-base into the
buildroot. This caused the org.osbuild.zipl.inst stage because of missing
/usr/sbin/zipl.

This commit introduces s390utils-base back into the buildroot which fixes
building of the s390x images.

I verified it by building the RHEL 9.1 qcow2 image and booting it using
libvirt.

Signed-off-by: Ondřej Budai <ondrej@budai.cz>
2022-12-08 16:11:52 +01:00
Achilleas Koutsou
9e66ee13e7 image: enable ISOLinux only for x86_64
ISOLinux was unconditionally enabled for all ISOs, which is incorrect
and breaks builds on aarch64.
Enable it only for x86_64.
2022-12-08 10:30:09 +01:00
Sanne Raymaekers
4b90cb6fa4 cloudapi/v2: set ostree rhsm option on image options
The ostree options are used during the ostree resolve job, but when
generating the manifest the rhsm value comes from the image options, so
it's necessary to set it on both.
2022-12-07 16:31:46 +01:00
Irene Diez
6cb8216f09 internal: update firewall stage to allow zones
Updates firewall stage customizations to allow zones
as per the changes made on osbuild/osbuild#1157

Relevant tests and pipelines for rhel8+9 updated.

Signed-off-by: Irene Diez <idiez@redhat.com>
2022-12-06 16:39:00 +01:00
Antonio Murdaca
80a6b1bd23 Extend firewall customizations to add sources
Signed-off-by: Antonio Murdaca <runcom@linux.com>
Co-authored-by: Irene Diez <idiez@redhat.com>
2022-12-06 16:39:00 +01:00
Sayan Paul
6f56bee611 build:add journald stage to thel 8/9 pipeline
Adds the new journald stage to rhel 8/9
rpmostree commit pipeline.This will add
the dropin file `10-persitent.conf` with
the storage option set as persistent.

Co-authored-by: Sayan Paul <paul.sayan@gmail.com>
Co-authored-by: Irene Diez <idiez@redhat.com>
Signed-off-by: Sayan Paul <saypaul@redhat.com>
2022-12-06 12:15:09 +01:00
Sayan Paul
5ce3de214d build:create systemd_journald stage
Creates new stage to configure
journald to persist the journal.
Instead of creating the `/var/log/journal`
directory we explicitly configure journald
via the new stage.This is done in
according to the FCOS norms.
Unit tests also added for functionality
check.

Co-authored-by: Irene Diez <idiez@redhat.com>
Signed-off-by: Sayan Paul <saypaul@redhat.com>
2022-12-06 12:15:09 +01:00
Achilleas Koutsou
8c75975917 osbuild: add masked services to systemd stage 2022-12-02 19:04:26 +00:00
Gianluca Zuccarelli
5457b9fba2 metrics: update status metrics label
Openshift overrides the `service` label for
all metrics in the cluster. Update the label
from `service` to `subsystem` for the status
metrics query. This helps us differentiate
between requests from composer and the worker
server.
2022-12-02 09:25:40 +01:00