Commit graph

5022 commits

Author SHA1 Message Date
Achilleas Koutsou
8c361e510d platform: add special GCE platform format
GCE requires an archive with specific (tar) options, so we should have a
platform format defined separately for it.
Add the GCE image types to the x86_64 arch using the new platform
format.
2022-11-28 17:20:49 +01:00
Achilleas Koutsou
3fc8fd2cb9 manifest: support all tar options in tar pipeline
Make the tar pipeline take any implementation of the Pipeline interface
as an input argument.
Add support for all the tar stage options.
2022-11-28 17:20:49 +01:00
Achilleas Koutsou
1a0a16bc46 test: update RHEL 9.x and CS9 azure and vhd manifests
Regenerate manifests for the Azure and VHD image types with the
rewritten definitions:
- remove unnecessary RPMs in the build root
- changed order of rhsm stage: this should have no effect functionally
2022-11-28 17:20:49 +01:00
Achilleas Koutsou
1d1523828a distro/rhel9: update azure images to new definitions
Add the new image function and remove the pipeline function.
Remove the build package set.
Rename the last pipeline to xz for the RHUI image type.
2022-11-28 17:20:49 +01:00
Achilleas Koutsou
ae37ebb286 image: support compression on all live image types
Apply "xz" compression to any artifact pipeline if it's specified in the
image type.  The image filename should be applied to the pipeline only
if it's the last one, so we need to skip this assignment if we're going
to add a compression pipeline at the end.

This is a bit dirty but the plan is to remove artifact compression from
manifests and perform it during the export in osbuild-composer, so this
should go away soon.
2022-11-28 17:20:49 +01:00
Achilleas Koutsou
458f51128a manifest: set default VPC filename to image.vhd 2022-11-28 17:20:49 +01:00
Achilleas Koutsou
4f60aa3c1d distro/rhel9: move azure image definitions to the top of the file 2022-11-28 17:20:49 +01:00
Achilleas Koutsou
db88c734c1 manifest: add support for waagent and udevrules to liveImage
Extend the OSCustomizations to include the WAAgentConfig and UdevRules
options.
Propagate those options from the image's config down to the
OSCustomizations and add the stages to the os pipeline when they're
specified.
2022-11-28 17:20:49 +01:00
Achilleas Koutsou
f3e43a01bc test: update RHEL 9.x and CS9 manifests
Adding python3-pyyaml to the build root for manifests that contain
cloud-init in the OS pipeline.
Adding python3-iniparse to the build root for manifests that contain
rhsm or dnf.config in the OS pipeline.
2022-11-28 17:20:49 +01:00
Achilleas Koutsou
370a0d1b29 manifest: add packages required by osbuild stages
Add python3-pyyaml to the build root when the OS pipeline includes the
cloud-init stage.
Add python3-iniparse to the build root when the OS pipeline includes
the dnf.config or rhsm stage.
The addition of the stages is detected using the corresponding
customizations.
2022-11-28 17:20:49 +01:00
Achilleas Koutsou
b0574daa90 test: update RHEL 9.x ec2 and ec2-ha manifests
Regenerate manifests for the EC2 and EC2-HA image types with the
rewritten definitions:
- remove unnecessary RPMs in the build root
- added dofstools to the image
- internal raw image filename changed: this has no effect on the final
  artifact, since it's compressed and renamed before exporting.
- rhsm stage order changed.
2022-11-28 17:20:49 +01:00
Achilleas Koutsou
c35c4784a4 distro/rhel9: update ec2 and ec2-ha to new definitions
Add the image function and remove the pipeline function.
Remove the build package set.
Add "xz" compression and rename the last pipeline.
Propagate the compression option down to the liveImage() image creation
function.
2022-11-28 17:20:49 +01:00
Achilleas Koutsou
6fed422972 image: xz compress a pipeline if the image specifies it
If an image specifies xz compression, add an xz pipeline to the end of
the manifest.
2022-11-28 17:20:49 +01:00
Achilleas Koutsou
631b133352 manifest: make NewXZ() take any kind of pipeline for input
The XZ pipeline was initially only for the ostree raw image but now it
can be applied to the output of any pipeline.
2022-11-28 17:20:49 +01:00
Achilleas Koutsou
bc219c825e distro/rhel9: add compression option to imageType
The compression field defines the compression type for the final image,
if any.
This is a temporary change.  We should design a better way to specify
"transport compression" for images, compression that is not required by
the image type or platform, but simply done for transport convenience or
storage.
2022-11-28 17:20:49 +01:00
Achilleas Koutsou
c5bd001071 test: update RHEL 9.x and CS9 ami manifests
Regenerated manifests for the AMI image type with the rewritten
definitions:
- removed RPMs in the build root: packages are added to the build-root
  on-demand by the payload pipelines.
- added dosfstools to the image: our new pipelines add fs tools for
  every filesystem type that appears in the partition table.
- rhsm stage order changed.
2022-11-28 17:20:49 +01:00
Achilleas Koutsou
bd4359ffd9 distro/rhel9: update ami to new definitions
Add the image function and remove the pipeline function.
Remove the build package set: build packages are added to the pipeline
on-demand.
2022-11-28 17:20:49 +01:00
Achilleas Koutsou
e2f7e1aed4 manifest: support X11KeymapLayouts in OS pipeline
In the OSCustomizations, we only apply the X11KeymapLayouts from the
image config if the keyboard customization is not specified.
Although we don't support specifying X11KeymapLayouts in the
customizations, it's related to the base Keymap and we should override
both settings in the image config if the base Keymap is specified.
2022-11-28 17:20:49 +01:00
Achilleas Koutsou
2541a2219f distro/rhel9: parameterise ec2/ami image config creation functions
Parameterise image config creation functions so that RHSM is added
conditionally based on distro name and version, instead of adding
conditions to the pipelines.
The pipeline generation function function should simply apply the
configurations without needing to know about the image type, distro
name, or version.
2022-11-28 17:20:49 +01:00
Achilleas Koutsou
a2a3ac8ffe test: regenerate manifests with chrony stages
Regenerate all manifests that used the old chrony stage options with the
'timeservers' field.  This is now replaced by the 'servers' field, which
is a slice of objects with a 'hostname' field instead of a slice of
strings.
2022-11-28 17:20:49 +01:00
Achilleas Koutsou
5d760c48ad osbuild: remove Timeservers slice from chrony stage
The org.osbuild.chrony stage was extended to allow additional directives
alongside time servers [1].  The old Timeservers string slice was kept
for backwards compatibility.  Removing support for it in
osbuild-composer makes working with the stage's options simpler.  Using
the new struct slice Servers field and only specifying a Hostname for
each element is equivalent to the old behaviour, so no functionality is
lost.

This simplifies the chrony stage since no validation is required
anymore.
It also simplifies the propagation of configuration options through the
pipeline generation code which doesn't need to check for both types of
stage options.

[1] https://github.com/osbuild/osbuild/pull/692
2022-11-28 17:20:49 +01:00
Achilleas Koutsou
0ba1a5ff73 test: update RHEL 9.x and CS9 vmdk manifests
Regenerated manifests for the vmdk image type with the rewritten
definitions:
- removed RPMs in the build root: packages are added to the build-root
  on-demand by the payload pipelines.  All removed package were
  unnecessary for building the image.
2022-11-28 17:20:49 +01:00
Achilleas Koutsou
a027b373a5 distro/rhel9: update vmdk image type to new definitions 2022-11-28 17:20:49 +01:00
Achilleas Koutsou
88ff103621 test: update RHEL 9.x and CS9 edge manifests
Regenerated manifests for the edge image types with the rewritten
definitions:
- removed RPMs in the build root: packages are added to the build-root
  on-demand by the payload pipelines.  All removed package were
  unnecessary for building the image.
- pipeline names changed.
- rpm stage for os pipeline now sets dbpath and ostree-booted option
  (see [1] for original change in Fedora).
- installer pipelines changed to no longer use bootiso.mono stage, but
  instead break it down to component stages (see [2] for original change
  in Fedora).

Fedora IoT manifests updated to include selinux labelling changes.

The skopeo and containers storage stage have been temporarily dropped
since the new pipeline generator functions don't support it yet.

[1] https://github.com/osbuild/osbuild-composer/pull/2914
[2] https://github.com/osbuild/osbuild-composer/pull/3020
2022-11-28 17:20:49 +01:00
Achilleas Koutsou
e8285fb2bf manifest: set selinux labels for cp and tar conditionally
Only label cp and tar if they're found in the list of packages for the
build root.
2022-11-28 17:20:49 +01:00
Achilleas Koutsou
ce037e24be distro/rhel9: add image-installer to same platform as edge 2022-11-28 17:20:49 +01:00
Achilleas Koutsou
10544e8016 distro/rhel9: update edge types to new definitions
Updated all edge image types except the simplified installer to the new
image definitions.
Added the image functions, based on the Fedora counterparts, and removed
the pipeline functions.
Removed the build package from the image definition.
Removed firmware packages from platform: not available in repos.
2022-11-28 17:20:49 +01:00
Achilleas Koutsou
9d34362bbf test: update RHEL 9.x and CS9 qcow2, oci, and openstack manifests
Regenerated manifests for the QCOW2, OCI, and openstack image types with
the rewritten definitions.

The skopeo stage is not yet added by the live image pipeline.

The following changes in the manifests should affect the final image:
- Removed RPMs in the build root: packages are added to the build-root
  on-demand by the payload pipelines.  All removed packages were
  unnecessary for building the image.
- /usr/bin/tar removed form selinux stage: tar should be added on-demand
  if it's needed by any of the payload pipelines.
2022-11-28 17:20:49 +01:00
Achilleas Koutsou
12cbce58cb distro/rhel9: conditionally add RHSM to config
Only add the RHSM options to RHEL and not CS9.
2022-11-28 17:20:49 +01:00
Achilleas Koutsou
85a2029b4a manifest: support RHSM stage in OS pipeline 2022-11-28 17:20:49 +01:00
Achilleas Koutsou
89202bdda8 manifest: don't add hostname stage if not specified
Skip the hostname stage if the hostname option is an empty string.
2022-11-28 17:20:49 +01:00
Achilleas Koutsou
0c6bbc6dff distro/rhel9: update qcow2 and openstack to new definitions
Add the image function and remove the pipeline function.
Remove the build package set: build packages are added to the pipeline
on-demand based on platform, environment, etc.
Copied the liveImage ImageKind generator from Fedora.
2022-11-28 17:20:49 +01:00
Achilleas Koutsou
51ac3e973e distro/rhel9: add support for imageFunc on image types
Add image and environment to the imageType struct.
Also define two new methods:
PackageSetsNew() and ManifestNew()

These get called by the corresponding base methods PackageSets() and
Manifest() when imageType.image is defined.  They will serve to
transition images to the new framework while also supporting the old
until all image types are updated.
2022-11-28 17:20:49 +01:00
Achilleas Koutsou
adc7a1cafa distro/rhel9: separate image type definitions
Split image type definitions into separate files by logical groups
(mostly by footprint and cloud platform) for easier navigation.
The image types are now all defined as package globals, like in Fedora.
Image specific package sets are defined in the file for the image type
grouping instead of the package_sets file.

A notable change is in the AWS/AMI types, which have different configs
based on OS version.  To get around this, we create each image type with
a function parameterised by the OS version string.  This is a bit messy
and inconsistent with other image types, but it's a temporary workaround
which will be cleaned up as the definitions get closer to the new
framework used in the fedora package.
2022-11-28 17:20:49 +01:00
Achilleas Koutsou
94eb5ca96d distro/rhel9: configure platforms for each image type
Create platform configurations for each image type based on the ones in
Fedora.
Currently this has no effect on the image definition / manifest.
2022-11-28 17:20:49 +01:00
Achilleas Koutsou
a0e05ea192 distro/rhel9: add platform to image type
Add platform attribute to imageType like we do in Fedora.
Currently this has no effect.
2022-11-28 17:20:49 +01:00
Achilleas Koutsou
1584770307 platform: add configs for ppc64le and s390x 2022-11-28 17:20:49 +01:00
Achilleas Koutsou
fe5835fece distro/rhel9: move imageType implementation to separate file
Move the imageType type and its methods to a separate file to make
them easier to manage.
This might get rewritten to have a default implementation for a lot of
the common functions that have simple, straightforward functionality
(e.g., return the value of an internal field).
2022-11-28 17:20:49 +01:00
Achilleas Koutsou
4ec14ca5da distro/rhel9: move architecture implementation to separate file
Move the architecture type and its methods to a separate file to make
them easier to manage.
This might get merged with the other implementations to make a default
one because they're all (basically) the same.
2022-11-28 17:20:49 +01:00
Achilleas Koutsou
7bcbab0ba5 distro/rhel9: update distribution implementation
Update the implementation of the distro.Distro interface to match the
one in Fedora.  The main change is that the runner is a runner.Runner
and not a string.

The distroMap is replaced by two functions that initialise a
distribution struct from a template (one for CentOS and one for RHEL).
2022-11-28 17:20:49 +01:00
Achilleas Koutsou
310578757a runner: add python or platform-python to all build roots
Required for running osbuild modules.
In Fedora, so far, python3 was always pulled by some other build-root
dependency.  We should add it explicitly since it's required by all our
runners.
For RHEL and CentOS, the requirement is platform-python.

For RHEL 8 and CentOS 8, we also need to explicitly add python36 and for
RHEL 9 and CentOS 9 python3 because it's used to run the stages in
osbuild [1].

[1] ea8261cad6/runners/org.osbuild.rhel82 (L61)
2022-11-28 17:20:49 +01:00
Achilleas Koutsou
5592e6a51f runner: add CentOS runner type
New runner type for CentOS 8 and 9.  Copied from RHEL
2022-11-28 17:20:49 +01:00
Achilleas Koutsou
e9746bed32 test: regenerate all edge-commit and qcow2 manifests
Create new manifests for the new edge-commit-with-container
configuration and the qcow2 for RHEL 9.1
2022-11-28 17:20:49 +01:00
Achilleas Koutsou
04a7cd36c7 format-request-map: new manifests for container embedding
Add manifests for container embedding in edge-commits and qcow2s.
Limit qcow2 container embedding to RHEL 9.1 for now since it's not
supported on Fedora or RHEL 8 yet.
2022-11-28 17:20:49 +01:00
Achilleas Koutsou
3fa012b73a runner: fix RHEL runner (was fedora) 2022-11-28 17:20:49 +01:00
Ondřej Budai
97c8622a0c ci: update Fedora 37 runners to GA
We used pre-GA repositories previously. Since GA is now out, let's switch to
it. We need to do two changes:

- use the latest terraform definitions that use the GA images
- update Schutzfile to use GA repositories (and updates)

Signed-off-by: Ondřej Budai <ondrej@budai.cz>
2022-11-28 16:56:44 +01:00
Sanne Raymaekers
7ae79e7786 osbuild-worker: correctly pass ostree error details
Passing an error as details results in the details being empty after
marshaling. Pass the string formatted error instead.
2022-11-26 00:12:52 +00:00
fkolwa
401a59b6e4 distro/rhel7: Add insights-client to Azure package set
Add insights-client package to azureRhuiCommonPackageSet conditionally
Regenerate test cases for RHEL 7 azure-rhui
2022-11-25 13:15:49 +01:00
Xiaofeng Wang
920431a679 test: Disable secure boot for CS9 on libvirt_test.sh 2022-11-25 03:47:30 +01:00
Xiaofeng Wang
422e70c8ce test: Update nightly compose URL to updates URL
Since RHEL 9.1 and 8.7 released, the nightly compose URL moved to
update URL, like /rhel-8/nightly/updates/RHEL-8/latest-RHEL-8.7.0/
2022-11-25 03:47:30 +01:00