Bug 1920735

Summary: Variables in /etc/dnf/vars are not expanded in the Installer environment
Product: Red Hat Enterprise Linux 8 Reporter: Brian Stinson <bstinson>
Component: anacondaAssignee: Radek Vykydal <rvykydal>
Status: CLOSED ERRATA QA Contact: Release Test Team <release-test-team-automation>
Severity: unspecified Docs Contact:
Priority: medium    
Version: CentOS StreamCC: bryonadams, bstinson, carl, davide, jblazek, jikortus, jkonecny, jstodola, jwboyer, mmcgrath, pkotvan, rvykydal
Target Milestone: rcKeywords: Triaged
Target Release: 8.0   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: anaconda-33.16.4.11-1 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2021-05-18 15:47:16 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Attachments:
Description Flags
Error message in Anaconda none

Description Brian Stinson 2021-01-26 23:54:29 UTC
Created attachment 1751051 [details]
Error message in Anaconda

In CentOS Stream we use the $stream dnf variable in our yum repo configs for querying our mirrorlist. https://git.centos.org/rpms/centos-repos/blob/c8/f/SOURCES/CentOS-Stream-BaseOS.repo

When booting anaconda, I would expect that after configuring networking, the installer should ask mirrorlist for a URL like this:

http://mirrorlist.centos.org/?release=8-stream&arch=x86_64&repo=BaseOS&infra=stock

From logs on the mirrorlist server, I actually see it asking for the url:

http://mirrorlist.centos.org/?release=$stream&arch=x86_64&repo=BaseOS&infra=$infra

This causes the attached error to show up in the installer

Comment 1 Mike McGrath 2021-01-27 00:55:03 UTC
Thanks for opening this Brian.  This is one of those quality of life things and since it happens at install time we really should fix this as soon as we can.

Comment 2 Marek Blaha 2021-02-01 15:02:07 UTC
Unfortunately no config files are automatically loaded when dnf is used via API. At the moment all the work must be done on the client side (anaconda in this case). Here is an example how to load main configuration and variables definitions using dnf API:

import dnf

base = dnf.Base()
# load the main dnf.conf (I'm not sure if this makes sense in anaconda use case)
# the dnf.conf might specify different location of varsdir
base.conf.read(priority=dnf.conf.PRIO_MAINCONFIG)
# load variables substitutions from base.conf.varsdir, default value for varsdir is ("/etc/yum/vars/", "/etc/dnf/vars/")
# the varsdir is searched under the installroot location. So if the varsdir is located on the host (outside the installroot)
# then you have to use "/" as installroot in this call
base.conf.substitutions.update_from_etc(installroot=base.conf.installroot, varsdir=base.conf.varsdir)
# now variables are set and you should be able to load repositories and do what you need to do
base.read_all_repos()
base.fill_sack()
...

(see https://dnf.readthedocs.io/en/latest/api_conf.html#dnf.conf.Conf for more information)

Comment 3 Radek Vykydal 2021-02-03 15:46:37 UTC
This patch fixes the issue for me:
https://github.com/rhinstaller/anaconda/pull/3139

Comment 4 Carl George 🤠 2021-02-11 21:45:20 UTC
*** Bug 1910816 has been marked as a duplicate of this bug. ***

Comment 5 Jan Stodola 2021-02-17 19:04:20 UTC
Reproduced with anaconda-33.16.4.9-1
Verified with anaconda-33.16.4.11-1 and updates.img containing files etc/dnf/vars/stream and etc/dnf/vars/infra with the appropriate content.
It was possible to install from the "http://mirrorlist.centos.org/?release=$stream&arch=x86_64&repo=BaseOS&infra=$infra" mirrorlist entered in the anaconda GUI. It also works fine for $variable specified in kickstart in the url command.

Comment 10 errata-xmlrpc 2021-05-18 15:47:16 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory (anaconda bug fix and enhancement update), and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHBA-2021:1844