Replace the Anaconda product configuration files with profiles
Summary
In Anaconda, we would like to introduce profile configuration files and remove the support for product configuration files.
Owner
- Name: Vendula Poncova
- Email: <vponcova@redhat.com>
Current status
- Targeted release: Fedora Linux 35
- Last updated: 2021-06-22
- FESCo issue: #2622
- Tracker bug: #1974819
- Release notes tracker: #705
Detailed Description
Anaconda allows to change its configuration based on a detected product using the product configuration files. The configuration is chosen based on the inst.product
and inst.variant
boot options, or the Product
and Variant
options of the .buildstamp
file, or the NAME
option in the os-release
files.
This solution has several flaws:
- The detection based on the
os-release
files will no longer work because of a Fedora 35 change. - The
.buildstamp
file is generated bylorax
when it creates is a boot.iso. Therefore, we have to rely on other solutions during the live, dir and image installations. - The
inst.product
andinst.variant
boot options are misleading. Anaconda will run with a different configuration. That doesn't mean it will install a different product. - The configuration has to use a fake product name for its identification if it is not tied to a real product.
We would like to redesign the product configuration files to solve these issues. The idea is to replace them with more general profile configuration files:
- The profile will be identified by a unique id.
- The profile can specify additional options for the automated profile detection.
- The profile will be chosen based on the
inst.profile
boot option, or based on theID
andVARIANT_ID
options of theos-release
files.
For example, Fedora Server uses a configuration from /etc/anaconda/product.d/fedora-server.conf
.
The configuration can be enforced with the inst.product=Fedora inst.variant=Server
boot options.
The file contains the following sections:
[Product] product_name = Fedora variant_name = Server [Base Product] product_name = Fedora
After this change, Fedora Server will use a configuration from /etc/anaconda/profile.d/fedora-server.conf
.
The configuration can be enforced with the inst.profile=fedora-server
boot option.
The file will contain the following sections:
[Profile] # Define the profile. profile_id = fedora-server base_profile = fedora [Profile Detection] # Match os-release values. os_id = fedora variant_id = server
The full draft of the profile configuration files is provided at: https://github.com/rhinstaller/anaconda/pull/3388
Feedback
Benefit to Fedora
- The installer will use ids instead of names. That will solve the problem with the Fedora 35 change and prevent similar issues in the future.
- All types of installation will use
os-release
values to identify the product. We can remove workarounds for boot.iso and Live ISO. - The
inst.profile
option makes more sense, because it allows to choose a different installation profile. - A configuration, that is not tied to a product, doesn't have to provide a fake product name or id.
Scope
- Proposal owners: Will submit a pull request for the
anaconda
package.
- Other developers: Should be no impact. Anaconda provides configuration files for all Fedora products and the products rely on the automated detection of configuration files.
- Release engineering: #Releng issue number
- Policies and guidelines: N/A (not needed for this Change)
- Trademark approval: N/A (not needed for this Change)
- Alignment with Objectives: None.
Upgrade/compatibility impact
How To Test
Test the automated profile detection:
- Download and boot the Fedora Server ISO.
- The installation is started with the Fedora Server configuration.
Test the inst.profile
boot option:
- Download and boot the Fedora Everything ISO.
- Add the
inst.profile=fedora-server
boot option. - The installation is started with the Fedora Server configuration.
User Experience
- Users will have to use the
inst.profile
boot option instead ofinst.product
andinst.variant
. - Maintainers of custom product configuration files will have to change their files.
Dependencies
None.
Contingency Plan
- Contingency mechanism: (What to do? Who will do it?) N/A (not a System Wide Change)
- Contingency deadline: N/A (not a System Wide Change)
- Blocks release? N/A (not a System Wide Change), Yes/No
Documentation
N/A (not a System Wide Change)