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.
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
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.
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
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.
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.
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.
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.
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.
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).
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.
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).
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)
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.
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>
Previously the blueprint change was only present until a reboot. The
change and its version was recorded, but the actual blueprint was not
saved.
This adds saving the blueprint when it is changed, and loading the old
blueprint versions when they are present in the store.
No version change is needed, if the blueprint is not present it is
loaded as an empty blueprint which was already being detected by
checking the length of the Name.
This will allow specific blueprint changes to be recalled after a
restart of the server.
This also includes tests for the new behavior.
The get_build_info() function uses nvrGreaterOrEqual() to determine how
to parse the output from composer-cli. The function prints the result
of the comparison but is often used in a loop when waiting for a compose
to finish, which makes CI logs very annoying.
Silence the version comparison output when called form get_build_info().
PR#553 [1] introduced a change to the worker subpackage and replaced
the systemd %preun RPM macro with a literal calls to `systemctl` due
to missing functionality in systemd. However, the change omitted the
fact, that the RPM macro executes commands only on package removal,
not upgrade.
As a result a local or remote worker which is running on the system
while the osbuild-composer-worker package is updated, gets stopped.
Fix the scriptlet and run the commands only on package removal.
[1] https://github.com/osbuild/osbuild-composer/pull/553
Signed-off-by: Tomáš Hozza <thozza@redhat.com>
- build simplified installer iso without mentioning FDO section.
- change done for rhel8 and rhel9
- add test case for this use case in test/case/ostree-simplified-installer.shovisioning
- fixed review comments
Signed-off-by: Sarita Mahajan <sarmahaj@redhat.com>
The `/etc/rhsm/ca/redhat-uep.pem` CA is not valid for consumer
certificates.
As a result resolving the ostree ref should use the system's CA cert
pool.
This adds the `fedora-image-installer` and
`fedora-image-installer-preview` images.
The image installer type installs anaconda-webui on Fedora >= 38 to use
the new UI. It also writes its setting to
`/usr/share/anaconda/interactive-defaults.ks` as the current
anaconda-webui has not yet been tested in kickstart mode.
To do so manifest.Anaconda was expanded to take a (subset) of options
for a KickstartStage which is will write into interactive-defaults.ks.
And to take a list of additional modules to enable, so we can set up
Anaconda with all default modules.
When the size of a logical volume is not aligned to the extent size of
the volume group, LVM2 will automatically align it by rounding up[1]:
Rounding up size to full physical extent 29.80 GiB
Rounding up size to full physical extent <3.82 GiB
Since we don't take that into account when we create a new volume or
set the size of an existing one, the size for the whole volume group
will be short by that amount and thus the creation of the last volume
will fail:
Volume group <uuid> has insufficient free space (975 extents): 977 required.
To fix this a new `AlignUp` method is added to the `MountpointCreator`
creator interface. It will align a given size to the requirements of
the implementing container, like e.g. `LVMVolumeGroup`. It is then
used by a new `alignEntityBranch` which takes a size and walks the
entity path, calling `AlignUp` for all entities that implement said
`MountpointCreator` interface; thus the resulting size should fullfil
the alignment requirement for all elements in the path.
NB: `PartitionTable` already had an `AlignUp` method.
Add a corresponding test.
[1]: 8686657664/lib/metadata/metadata.c (L1072)
Co-authored-by: Achilleas Koutsou <achilleas@koutsou.net>
Extract a `CreateLogicalVolume` method from `CreateMountpoint`
and implement the latter via the former. This makes it possible
to create a Logical Volume for an existing payload.