Commit graph

144 commits

Author SHA1 Message Date
Achilleas Koutsou
62dcd99a9a distro/rhel8: update image installer to new definitions
Using the same pipeline functions as Fedora and RHEL 9 and copied the
image function from RHEL 9.  The most notable change is the replacement
of the deprecated bootiso.mono stage with the more granular stages.
2023-01-18 11:50:35 +01:00
Achilleas Koutsou
b888a170a2 distro/rhel8: update edge simplified installer to new definitions 2023-01-18 11:50:35 +01:00
Achilleas Koutsou
e2b1baf47c distro/rhel8: update edge raw image to new definitions
Using the same pipeline code as RHEL 9 and Fedora introduces the
following changes to the image:
- ostree.config: moved and uses the stage mount instead of the old
  stage-specific options.
- lock root password like we do in Fedora and RHEL 9.
- set keymap to us and locale to C.UTF-8 like in Fedora and RHEL 9.
- grub2 contains kernel options and unified set to true.  This stage
  also now uses the ostree mount options to set up the deployment when
  running.
2023-01-18 11:50:35 +01:00
Achilleas Koutsou
8fa3f6cc5c distro/rhel8: update tar image to new definitions 2023-01-18 11:50:35 +01:00
Achilleas Koutsou
97ed09cd69 distro/rhel8: update vmdk images to new definitions 2023-01-18 11:50:35 +01:00
Achilleas Koutsou
d3369d1c76 distro/rhel8: update gce images to new definitions 2023-01-18 11:50:35 +01:00
Achilleas Koutsou
8443464096 distro/rhel8: gce-specific platform override
The gceX86 platform embeds the X86 platform and overrides the
GetPackages() method to exclude the grub2-pc package.

The gce image is built as UEFI only, does not include 'grub2-pc', but we
enable BIOS in the platform config for all the other side-effects: grub
config options and grub2.inst stage.

See the image type documentation for more information:
d12d9674d6/image-types/rhel8/google-gce.md (rhel-8-byosrhui--rhel-9-byos-image-differences-compared-to-googles-image)
2023-01-18 11:50:35 +01:00
Achilleas Koutsou
91e2a62654 distro/rhel8: make gce rhsm config conditional
We don't have distro-based conditions in the pipeline generator
functions anymore.  All config conditions must be defined at the distro
level.
2023-01-18 11:50:35 +01:00
Achilleas Koutsou
9af2b2accf distro/rhel8: update azure images to new definitions
Move image type definitions to the top of the file and convert them to
functions.
Replace the pipeline function with the liveImage image function.
2023-01-18 11:50:35 +01:00
Achilleas Koutsou
e1ebb55d0a distro/rhel8: update ami and ec2 images to new definitions 2023-01-18 11:50:35 +01:00
Achilleas Koutsou
0b263d5478 distro/rhel8: update qcow2 and openstack to new definitions
Copy osCustomizations() and liveImage() functions from RHEL 9.
Delete unused functions.
2023-01-18 11:50:35 +01:00
Achilleas Koutsou
f0b7528ab6 distro/rhel8: add support for imageFunc on image types
Add image, environment, and compression to the imageType struct.

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.
2023-01-18 11:50:35 +01:00
Achilleas Koutsou
a0cf527716 distro/rhel8: image type separation: installer and tar 2023-01-18 11:50:35 +01:00
Achilleas Koutsou
b00aaa06ea distro/rhel8: image type separation: gce 2023-01-18 11:50:35 +01:00
Achilleas Koutsou
801affc26a distro/rhel8: image type separation: vmdk 2023-01-18 11:50:35 +01:00
Achilleas Koutsou
fd93f47d3f distro/rhel8: image type separation: qcow2 and openstack
Continuing image type splitting.

Constructor for qcow2 type requires the distribution object to determine
whether to add RHSM to the image config (RHEL only).
2023-01-18 11:50:35 +01:00
Achilleas Koutsou
8fd33b1590 distro/rhel8: image type separation: ami and edge
Start splitting image type definitions into separate files by logical
groups (mostly by footprint and cloud platform) for easier navigation,
like we did for rhel9.

Split AMI and Edge image types; the rest will follow in separate
commits.

Image specific package sets are defined in the file for the image type
grouping instead of the package_sets file.

A notable difference with the way it was done in rhel9 is that every
image type is defined in a function rather than a global where possible
and a function when distro version specific configuration is needed.
This is done for consistency and the change will likely be done in the
other distributions as well.
Also, instead of passing only required values to the image type
constructor (for example, osVersion and a RHEL boolean), we pass the
whole distribution object and each constructor can read whatever
information it needs.
2023-01-18 11:50:35 +01:00
Achilleas Koutsou
0f78b65e4e distro/rhel8: configure and add platforms to image types
Add platform attribute to imageType.
Create platform configurations for each image type, copied from RHEL 9.
Currently this has no effect on the image definition / manifest.
2023-01-18 11:50:35 +01:00
Achilleas Koutsou
abdc24a245 distro/rhel8: move imageType implementation to separate file 2023-01-18 11:50:35 +01:00
Achilleas Koutsou
08b1876951 distro/rhel8: move architecture implementation to separate file 2023-01-18 11:50:35 +01:00
Achilleas Koutsou
47f935f8b7 distro: remove HostDistro contructors
The host distro object was identical to the regular distro objects for a
while now.  The constructors in the registry have been aliases to the
base constructors for a long time.

- Deleted all HostDistro constructors from the distributions.
- Changed the supported distro list to only contain base constructor
  functions.
- The host distro in the distro registry is a copy of the base distro
  that matches the host and does not call a separate constructor.
2023-01-18 11:50:35 +01:00
Achilleas Koutsou
1a73e08905 distro/rhel8: update distribution implementation
Update the implementation of the distro.Distro interface to match the
one in RHEL 9 and Fedora.  The main change is that the runner is a
runner.Runner and not a string.

The distroMap is replaced by a switch that initialises the distribution
struct strings based on the minor version number.

The default minor version, created with rhel8.New(), creates a copy of
RHEL 8.6 and renames it to "rhel8".
2023-01-18 11:50:35 +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
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
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
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
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
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
Sarita Mahajan
dc3c0d9725 simplified-installer: do not mandate FDO section in simplified provisioning
- 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>
2022-11-22 11:36:54 +01:00
Simon de Vlieger
d4d100383e image: create installer image types for fedora
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.
2022-11-21 09:45:26 +01:00
Brian C. Lane
f9b3f95615 distro: Install ansible for sap on 8.5 as well 2022-11-18 16:53:22 +01:00
Brian C. Lane
e4f7e94dd0 distro: Use GibiByte constant for Azure 64GiB Images
instead of using 68719476736, use 64 * common.GibiByte
2022-11-18 16:53:22 +01:00
Brian C. Lane
8c07d65fe0 distro: Add azure-sap-rhui image type to RHEL8 2022-11-18 16:53:22 +01:00
Brian C. Lane
a47c239d11 distro: Move alsa-lib out of azureCommonPackageSet Exclude 2022-11-18 16:53:22 +01:00
Brian C. Lane
010d92eed1 distro: Separate out RHEL8 SAP package set into its own function
This also moves cloud specific client packages into that cloud's
PackageSet so that the SAP packages are common to all users.
2022-11-18 16:53:22 +01:00
Brian C. Lane
ed7aaec12d distro: Move RHEL 8 SAP config data into sap.go
This can be shared between cloud providers so move it out of the EC2 SAP
config into its own file and drop the X86_64 from the name (there is
nothing arch specific in it, even if it is only ever used on X86).
2022-11-18 16:53:22 +01:00
Tomáš Hozza
a930073e4a distro/RHEL-8: disable amdgpu module on all AWS images
`amdgpu` module is causing error to be printed in the system log on AWS
instances. After investigation, it turns out that it is not needed.
Disable it by default on all AWS images.

Related to COMPOSER-1807

Signed-off-by: Tomáš Hozza <thozza@redhat.com>
2022-11-15 12:04:42 +01:00
Simon de Vlieger
f6bd62e838 distro: SELinux should be the last stage
SELinux relabels the entire filesystem tree and should always be the
last stage in the os pipelines.
2022-11-09 15:41:40 +01:00
Tomáš Hozza
fc95dac86a distro: add support for RHEL-8.8
Add relevant repo definitions and generate image test manifests.

Signed-off-by: Tomáš Hozza <thozza@redhat.com>
2022-10-31 08:07:09 +01:00
Sanne Raymaekers
500341a25f internal/osbuild: contenturl and rhsm secrets for ostree sources 2022-10-28 16:14:30 +02:00
Tomáš Hozza
b65bb9491f distro/rhel8: adjust RHSM-related config on EC2 8.7+ images
The EC2 images starting with 8.7 should:
 - not configure RHSM using osbuild
 - install `redhat-cloud-client-configuration` package which ships the
   RHSM configuration.

Regenerate affected image manifests

Related to COMPOSER-1804.

Signed-off-by: Tomáš Hozza <thozza@redhat.com>
2022-10-19 17:07:36 +02:00
Achilleas Koutsou
7ebe3f550c distro/rhel: set ostree sysroot.readonly to false
We used to always set the sysroot.readonly setting to true, but this
never worked because of a bug in osbuild [1].
The bug is now fixed and the RHEL and CentOS edge-raw images are crated
with sysroot.readonly = true, and the images aren't booting.

Fixing the option to false.  This changes the manifests, but not the
generated images because of the change in osbuild.

If sysroot is meant to be readonly, we will change it in a future
update.

[1] https://github.com/osbuild/osbuild/pull/1129
2022-10-11 10:00:22 +02:00
Achilleas Koutsou
390ae15eaa distro: replace ostree.RequestParams with new OSTreeImageOptions
Instead of using the ostree.RequestParams in the OSTReeImageOptions,
define a new struct specific to ImageOptions for the ostree parameters.
This is almost identical to the new ostree.CommitSpec but the meaning of
the parameters changes based on image type and it would not be clear if
the CommitSpec was used in all cases.  For example, the parameters of
the new OSTreeImageOptions do not always refer to the same commit.  The
URL and Checksum may point to a parent commit to be pulled in to base
the new commit on, while the Ref refers to the new commit that will be
built (which may have a different ref from the parent).

The ostree.ResolveParams() function now returns two strings, the
resolved ref, which is replaced by the defaultRef if it's not specified
in the request, and the resolved parent checksum if a URL is specified.
The URL does not need to be returned since it's always the same as the
one specified in the request.
The function has been rewritten to make the logic more clear.
The docstring for the function has been rewritten to cover all use cases
and error conditions.
2022-10-11 10:00:22 +02:00
Achilleas Koutsou
c6b999f178 ostree: rename CommitSource to CommitSpec and add Ref
The CommitSource was used to specify the source URL and checksum of a
commit for use in manifest sources.  Renaming to CommitSpec and adding a
Ref parameter generalises the type so that we can use it to specify
commits in various situations.  This is building towards separating when
ostree parameters are used for fetching a commit, fetching a parent
commit, and building one.

The CommitSpec is (very roughly) analogous to the rpmmd.PackageSpec.
2022-10-11 10:00:22 +02:00
Achilleas Koutsou
14f608de0a osbuild: use internal users package structs in stages
Don't pass blueprint Users and Groups options all the way down to the
osbuild stage bindings.  Instead, convert them to the internal
users.User and users.Group structs.
Ideally we would do this even higher up in the code path, before
reaching the distro, but this is the first step towards that.
2022-09-29 18:09:38 +02:00
Achilleas Koutsou
3d772b6846 osbuild: simplify and unify tree stage inputs
- Remove stage-specific input types when they are org.osbuild.tree input
  types.
- Use PipelineTreeInputs when stage requires a single tree input
  reference with an arbitrary key.
- For Stages that require a specific key with a tree input, make the key
  part of the NewXStage() function and only allow specifying the name of
  the pipeline from which to copy the tree as part of the function
  arguments.
2022-09-29 18:09:38 +02:00
Tomáš Hozza
fd1850de40 distro: use storage capacity multiple constants in partition tables 2022-09-15 20:39:40 +02:00