SIMP 6.6.0 planning for EL8 modularity + ISO distribution
EL8 AppStream/modularity
Starting with EL8, many RPMs are distributed in Application Streams (based on DNF modularity). This is not optional—a basic EL8 installation may require packages from both BaseOS and AppStream, and EPEL distributes some software in the new epel-modular
repository.
New Repository metadata
Repositories with modules must provide an additional layer of modular (modulemd) metadata.
The modulemd manifest describes every module stream and their RPMs across the entire repository.
Modular repositories can only be built with a modularity-aware repository tool, like
createrepo_c
.The old
createrepo
command cannot build modular repositories—it is unaware of (and will destroy) modular metadata. DNF will be unable to install modular RPMs in a repository built bycreaterepo
.Modular repositories may include a mix of standard RPMs and modular RPMs.
New RPM & DNF behaviours
DNF must be used to install modular RPMs; yum does not support modularity
Each modular RPM is built with a special
ModularityLabel
tag.DNF will not install an RPM with a
ModularityTag
unless it can be associated with modulemd metadata from an available repository.
AppStream Lifecycle
Each RHEL AppStream (module stream) has its own lifecycle, which is usually not the full 10-year lifecycle of the Base OS: https://access.redhat.com/support/policy/updates/rhel8-app-streams-life-cycle.
This includes most default streams.
Some streams retire within two years (the first RHEL stream retires in April 2021).
SIMP ISO Build
Requirements
The SIMP ISO MUST be self-contained and capable of installing and boot-strapping a fully-functional OS and SIMP server on an isolated (offline) network.
Packages MUST install correctly from the SIMP ISO and repositories mirrored from the SIMP ISO
On systems with packages installed from the SIMP ISO/mirrors that are later configured to use those packages' original source repositories/mirrors:
All ISO-distributed packages MUST upgrade correctly (including modular packages)
All ISO-distributed package metadata MUST integrate seamlessly with the upstream (including modules and streams)
The ISO build process SHOULD continue to only include the packages it needs
Caveats
If necessary, the SIMP 6.6.0 ISO MAY mirror the entire base OS’s DVD
AppStream/
repository if it would avoid delays to the SIMP 6.6.0 build process.However, the ISO MUST NOT mirror entire third-party modular repositories (like
epel-modular
) just to provide a few packages it requires from single streams (e.g.,389-directory-server:stable
)“SIMP RPMs” (packaged by the SIMP project, included in the tarball) will NOT be distributed in module streams for the SIMP 6.6.0 release (and probably never).
Constraints
SIMP 6.6.0 requires RPMs from at least one module stream from
epel-modular
:389-directory-server:stable
, in order to support 389ds.
Requirements for SIMP ISO build + EL8 modularity
The following (derived from the information above) should enable us to build SIMP ISOs that distribute modular RPMs:
1. The ISO build process MUST distribute modular RPMs in “slim” subsets of their original module streams.
In order to maintain seamless interoperability, each “slim” modular stream subset MUST use the same name + stream + version + context + architecture (N:S:V:C:A) as their upstream sources
If feasible, the “slimming” process SHOULD be generalized enough to apply to packages from external sources like
epel-modular
AND the base OS’s DVDAppStream/
repository.
Alternatives considered were to include the entire modular repository (too big) or not ship modular dependencies (ISO + download server would no be longer self-contained).
2. The old createrepo
command MUST NEVER be run on a modular repository
This applies to both the ISO’s build process and post-installation local tooling on SIMP systems.
TODO The ISO’s modular repositories MUST be built with modularity-aware tools, like
createrepo_c
orcreaterepo_mod
from modulemd-tools.Local SIMP tooling MUST be changed to NEVER use
createrepo
on modular repositories.
3. Modular repos' modulemd metadata MUST remain intact when mirrored or rebuilt.
Modular repos MUST NOT be mirrored or rebuilt without it
The modulemd metadata will always be necessary in order to install these repos' modular packages—and once lost it cannot be recreated from their RPMs (unlike standard RPMs).
TODO Local SIMP tooling that mirrors modular repositories MUST preserve modulemd metadata (e.g.,
dnf reposync --download-metadata
)
The “Slim” subset repos are of particular concern, since SIMP tooling is guaranteed to encounter them.
Places where (pre-6.6.0) tooling uses createrepo
:
At least two sections of the ISO’s ks
auto.cfg
in simp-core (EL8 only; not yet created)
SIMP-9640: Update ISO's ks auto.cfg to support modular repositoriesClosedUpdateOsYumRepositoriesAction#apply() in
simp config
SIMP-9638: Update simp config to support modular repositoriesClosedThe update_yum_repo() method in
unpack_dvd
SIMP-9641: Update unpack_dvd to support modularityOpenIn the tmpdir recpos/base/ and repos/lookside/ while setting up in
rake pkg:repoclosure
SIMP-8614: unpack_dvd does not (re-)create modular repos/streams for EL8 dnf reposOpenSIMP-9642: Update repoclosure to support modularityClosed