Bug 2161664

Summary: [RFE] On prem image builder should allow users to specify a minor release
Product: Red Hat Enterprise Linux 8 Reporter: jcastran
Component: osbuild-composerAssignee: Image Builder team <osbuilders>
Status: NEW --- QA Contact: Release Test Team <release-test-team>
Severity: high Docs Contact: Eliane Ramos Pereira <elpereir>
Priority: high    
Version: 8.7CC: elpereir, obudai, sbarcomb
Target Milestone: rcKeywords: FutureFeature
Target Release: ---   
Hardware: All   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of:
: 2161665 (view as bug list) Environment:
Last Closed: 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:
Bug Depends On:    
Bug Blocks: 2161665    

Comment 2 Ondřej Budai 2023-01-17 14:43:08 UTC
Hi!

This is already supported, but I'm afraid that we forgot to document it in the RHEL documentation.

See the upstream documentation for now: https://www.osbuild.org/guides/blueprint-reference/blueprint-reference.html#distribution-selection-with-blueprints
The blueprint has a `distribution` field that can be used to build a different minor version. If you want e.g. RHEL 8.4, just use `distro = "rhel-84".
`composer-cli distros list` can be used for listing all distributions that composer can build.
Note that we intentionally limit the list to just distributions that were released earlier than the host's distribution. You can for example build RHEL 9.1 and RHEL 8.7 on RHEL 9.1, but you can only build RHEL 8.7 (and older) on RHEL 8.7.

Can you please verify this with the customer and report back if it works for them? Thanks!

@elpereir Can you double-check that the RHEL's documentation indeed doesn't mention the `distro` option in blueprints? I might be just blind. If it's indeed not there, let's work together on adding it, it's very useful to lots of our customers.

Comment 3 Ondřej Budai 2023-01-17 14:44:19 UTC
(In reply to Ondřej Budai from comment #2)
> The blueprint has a `distribution` field

I meant `distro`, sorry!

Comment 4 jcastran 2023-01-17 19:12:08 UTC
I tried using the distro flag but I'm still getting 9.1 content.

[root@r9 ~]# composer-cli blueprints depsolve test  | grep kernel
    kernel-modules-5.14.0-162.6.1.el9_1.x86_64
    kernel-core-5.14.0-162.6.1.el9_1.x86_64
    kernel-5.14.0-162.6.1.el9_1.x86_64

[root@r9 ~]# cat test
name = "test"
description = "A relatively blank blueprint"
version = "0.0.1"
modules = []
groups = []
distro = "rhel-90"


Looking at the 90.json file, we have a releasever of 9 which means the latest and greatest, not 9.0

[root@r9 ~]# grep url.*x86_64 /usr/share/osbuild-composer/repositories/rhel-90.json
      "baseurl": "https://cdn.redhat.com/content/dist/rhel9/9/x86_64/baseos/os",
      "baseurl": "https://cdn.redhat.com/content/dist/rhel9/9/x86_64/appstream/os",
      "baseurl": "https://packages.cloud.google.com/yum/repos/google-compute-engine-el9-x86_64-stable",
      "baseurl": "https://packages.cloud.google.com/yum/repos/cloud-sdk-el9-x86_64",

So I made a /etc/ file to override this:

# grep rhel9/9.*x86_64 /etc/osbuild-composer/repositories/rhel-90.json
      "baseurl": "https://cdn.redhat.com/content/dist/rhel9/9.0/x86_64/baseos/os",
      "baseurl": "https://cdn.redhat.com/content/dist/rhel9/9.0/x86_64/appstream/os",


But I'm still getting the same depsolve

[root@r9 ~]# composer-cli blueprints depsolve test  | grep kernel
    kernel-modules-5.14.0-162.6.1.el9_1.x86_64
    kernel-core-5.14.0-162.6.1.el9_1.x86_64
    kernel-5.14.0-162.6.1.el9_1.x86_64



~~~~~~~~~~~~~~~~
Testing on RHEL 8 I see similar incorrect behaviour. Picking the lowest release of 8.4, I am getting 8.6 content. 

[root@r8-imagebuilder ~]# composer-cli  blueprints depsolve test | grep kernel
	    kernel-core-4.18.0-372.32.1.el8_6.x86_64
    kernel-modules-4.18.0-372.32.1.el8_6.x86_64
    kernel-4.18.0-372.32.1.el8_6.x86_64

[root@r8-imagebuilder ~]# cat test
name = "test"
description = ""
version = "0.0.0"
packages = []
modules = []
groups = []
distro = "rhel-84"

Comment 6 Ondřej Budai 2023-01-25 11:09:35 UTC
John, have you restarted the service (or just the whole machine) before depsolving again? osbuild-composer doesn't check for changes in the repository overrides after the initial start, so you need to restart it. FTR, I would recommend rebooting the whole machine, we have some reports that restarting just the service doesn't always work and we haven't been able to track the root cause just yet.

Also, I have an additional question: Which content does the customer actually want? EUS, or non-EUS?

For non-EUS, that would be /content/dist/rhel9/9.0/ on the CDN, but since 9.0 is already in the EUS-phase, the directory doesn't get any updates since the 9.1 release.
For EUS, the directory is /content/eus/rhel9/9.0/, which is the source of our EUS-phase package updates. The customer has to have a subscription that contains EUS, though.

Comment 7 jcastran 2023-01-26 22:20:52 UTC
Testing on r9 (as my r8 image builder box is just not working), I am seeing 9.1 vs 9.0 depsolve correctly. Though am I correct in understanding that you're saying if I change the distro on a blueprint I have to potentially reboot my machine everytime? or only when adding an /etc/osbuild-composer/repository override?

Comment 8 Ondřej Budai 2023-01-27 10:22:07 UTC
Just when adding an /etc/osbuild-composer/repository override, no need to reboot your machine between depsolves.

Can you elaborate more on your broken r8 box? Is this tracked somewhere?

Finally, can you discuss the EUS vs. non-EUS question with the customer? This is actually a very important item for the team in order to better understand their needs.

Comment 9 jcastran 2023-01-27 21:00:35 UTC
> Can you elaborate more on your broken r8 box? Is this tracked somewhere?

No the system had .. personal issues. I've rebuilt it and it no longer has any issues.

> Finally, can you discuss the EUS vs. non-EUS question with the customer? This is actually a very important item for the team in order to better understand their needs.

I can ask them though I am not sure of the intent here. If the customer wants the latest 9.0 content, they will need to use EUS, in which I would have to direct them to make a custom /etc/osbuild-composer/repositories file since we don't have any method of enabling EUS outside of this. Just on that thought, I feel like I need to open some sort of RFE for any osbuild users to be able to switch to EUS when applicable.

Comment 10 Ondřej Budai 2023-01-30 11:09:13 UTC
(In reply to jcastran from comment #9)
> I can ask them though I am not sure of the intent here. If the customer
> wants the latest 9.0 content, they will need to use EUS, in which I would
> have to direct them to make a custom /etc/osbuild-composer/repositories file
> since we don't have any method of enabling EUS outside of this. Just on that
> thought, I feel like I need to open some sort of RFE for any osbuild users
> to be able to switch to EUS when applicable.

I absolutely agree with the RFE and that's exactly why I want to collect some data from users what they actually want, so we know the scope of the RFE. Thanks!

Comment 12 Ondřej Budai 2023-07-12 10:01:53 UTC
So I think we can actually close this RFE, since osbuild-composer already has support for building different minor versions. Do you agree?

Note to myself: Also close https://bugzilla.redhat.com/show_bug.cgi?id=2161665 if we decide to close this one.