Replies: 2 comments 2 replies
-
|
Sorry for the cop-out answer here but why not: All of the above? Of course, not all at once, but I think there's a good plan here that involves all of the options. Details below. Dependencies rpm & fix workaroundI think this is the ideal solution, but I agree that it would take longer to do than the others. So I would say let's keep it as the final long-term solution we would like to have. bootc-base-imgctl equivalent for anacondaLet's do this first as a quick solution. It will probably be simple enough to get out. Perhaps we could keep a development version of it under github.com/osbuild so we can point people to it when they have issues with the downstream version. But in the long run, we should plan to replace this with the first solution. Bootc-image-builder automatically creates derived containerI think this can be done in parallel, or eventually as a helper of bootc-image-builder. I wouldn't do it initially, let's get the users used to building their own derived containers and then provide them with this helper. We could evaluate its usefulness based on what users are doing. Assuming we have a way of knowing, if it turns out that everyone is just following our instructions and not adding anything extra, we can roll it in as a standard, safe way of creating the ISO with a single command. Just Document what is neededLet's document what's needed anyway. Meaning, the docs shouldn't just include the containerfile that describes how to make the derived container for the ISO, but should also explain what happens when you Something else ?Can't think of anything right now. |
Beta Was this translation helpful? Give feedback.
-
|
I'm sorry for the late response. I got to this discussion only now, after having a look at osbuild/images#1906 Since I'm missing the background on this spike, I'd like to ask about the actual need / reasons to base the installer environment on the bootc container. Why is this needed? I acknowledge that the installer environment should be based on the same distribution and version as the bootc container, but couldn't this be done by installing it traditionally as packages using the content from the repositories in the bootc container? In a sense, nobody will be running the installer environment for anything other than the installation, so it is a throwaway, one-time-use environment. The host system installed by the installer image is the part that must be entirely based on the bootc container. I'm definitely missing the motivation for making our lives more complicated than necessary to achieve this. Dependencies rpm & fix workaroundI actually like this solution the least. I think this is the worst approach from the maintainability perspective. My reasons:
bootc-base-imgctl equivalent for anacondaI don't have any experience with this script, but from your description, it doesn't sound like an ideal solution. But it is also not the worst if contributions to the repo where it lives is relatively easy to contribute to. Bootc-image-builder automatically creates derived containerI actually like this solution the most. From my point of view, we already do this for the package-based (This solution would enable the use of installer customizations in the BP even for bootc-based installer images; EDIT: I didn't realize that the way the fstree content is created does not affect our currently supported installer customizations, so this comment is not relevant) Just Document what is neededDocumenting things never hurts, so I agree with documenting this in any case. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
One goal we have for bootc-image-buidler (and image-builder-cli) is to support building anaconda installer ISO that are build from bootc images (instead of our current RPM based approach).
In osbuild/bootc-image-builder#1059 we implemented a spike that allows to create a bootc container with anaconda that can be turned into an installer ISO by bootc-image-builder. The Containerfile looks something like this (check the linked PR for the full one):
The spike contains code to also specify an "--installer-payload" so that users can install a container without anaconda in it. So e.g. for centos-bootc-9 create a derived installer container from centos-9 with anaconda and then bootc-image-builder would put the specified installer payload (usually also either centos-bootc-9 directly or a derived container from it) on the ISO.
We would like to turn this from a spike into something real that is as friction-less to the user as possible and the main friction is currently to construct the correct containerfile so that anaconda has alll dependencies and the required workarounds are applied.
So to solve this I see the following options:
Dependencies rpm & fix workaround
Create a image-builder-anaconda-deps package and put into all distros we support that contains the dependencies required and also fix all cases that need workarounds
This is the most elegant solution IMHO, here the containerfile looks like
the downside of course is that it will take a bit of time to fix the workarounds and to get the new deps package into the right places.
bootc-base-imgctl equivalent for anaconda
Create a new
bootc-anaconda-imgectlscript similar to the existingbootc-base-imagectl(or create a new subcommand in that script) that encapsulates the install and workarounds.This means the Containerfile would look something like this:
The upside of tihs solution is that there is only a single place that we need to put the script (the base-images repo) and we could get it in quickly before the workarounds are fixed and we would be flexible when new workarounds are needed. The downside that the base-image repo is quite far from the "images/bootc-image-builder repo" where this is used (and the image-builder team has no write access there).
Bootc-image-builder automatically creates derrived container
Here the bootc anaconda container would be invsible to the user and it would be auto-created based on a template in
images(orbootc-image-builder). It would simply assume that the containerfile works (and we would have tests to ensure this is the case for cs9,cs10,f42+,rhel-9,rhel-10). Least flexible approach and feels quite "magic".Just Document what is needed
We could simply document what needs to be done and in parallel work on removing the required workarounds and simplifying the dependencies required in dnf. More friction though.
Something else ?
Happy to hear any ideas or suggestions!
Beta Was this translation helpful? Give feedback.
All reactions