Conversation
|
If it works this is fine; we're not purporting to be any specific Fedora variant and it all seems in-line with what I'd expect. Let's not touch anything grub related to be honest; it shouldn't really be necessary and it should be managed by |
|
I am currently testing the image, but since this is new and sets the bar for other containerfiles, please give this a read @achilleas-k and @thozza (and anyone interested). |
25f6b72 to
d722064
Compare
|
So the initial-setup did not work as I assumed, I thought it disappears after first reboot but this is persistent until user confirms or cancels it in TUI/GUI. I think this is way too much for generic derived bootc images, so I am removing this. Also fixed one typo and elaborated the description. |
81f7132 to
96b34b0
Compare
|
Ready for final review. I rebased on top of Konflux pipeline cleanup, we are aiming to do all builds in Konflux. For this reason, the naming convention changed to match Konflux project structure. Please re-read the description I updated it with some findings during my boot testing. I realized that I installed many packages which were already part of the base image, so container files are now much lighter. Also, @supakeen raised a concern about Because the files do not have This is for easier editing, unfortunately |
79ca734 to
667ee34
Compare
|
One little change, forgot to update |
7843f2c to
4f54bff
Compare
ondrejbudai
left a comment
There was a problem hiding this comment.
Looks simple and straightforward, we can always tweak it later as we add more image types and versions.
thozza
left a comment
There was a problem hiding this comment.
In general, this looks good, but I have the following comments:
- The first commit says "move container files", but it just deletes them AFAICT, so the commit message is wrong.
- I'm not sure where are the kernel args coming from for qcow2, but they don't seem to match our image definitions, which would be desirable.
- WRT tuned, my position is that it is probably desirable to have it installed by default, but I feel like this should be part of the base bootc container image. My hope that our derived containerfiles will add just the bare minimum to make the system integrate nicely in the target environment, but they do not "finalize" the expected RHEL experience by installing bunch of additional packages. From my PoV, this just adds unwanted maintenance load on us and we should prevent it. Basically say that if tuned should be installed on RHEL image mode qcow2, then it should be in the base container that it is built from.... 🤷
|
Addressed all @thozza concerns. Reworded the first commit, dropped While we do not set serial console for arm64 in our distrodefs, I think we should since we do this for intel and is quite useful for virtualized environments to have out of box. So I propose to have it here and I can fix that in distrodef too perhaps. We have them for other image types but not for qcow2. |
thozza
left a comment
There was a problem hiding this comment.
Out of curiosity, and sorry for not following that discussion, how will initial setup work? Is cloud-init part of the base image?
The requested changes were addressed AFAICT.
There is neither |
Well, |
The same can be said about The idea of having those derived containers as thing as possible grew on me and my suggestion is: let's wait until someone asks for |
This adds Fedora qcow2 derived containerfile. I wanted to start small, this is the most simple one. This PR is meant for discussion, I am making several assumptions which might be completely wrong.
Image definitions
I used the
qcow2and/orcloud-qcow2image definitions when writing those Containerfiles as inspiration and my workflow was dropping anything that is not needed or not relevant for bootc.Assumption: users of the qcow2 image use cockpit-machines, libvirt or qemu/kvm directly. Although it is technically possible to use cloud-init in these environments, users must do additional configuration to achieve that (network endpoint, mount an ISO with seed info). Since image builder can actually help to set up users, passwords and ssh-keys, I am leaving cloud-init out of this.
I reviewed packages from both definitions and came up with the list that includes guest agents group plus some tools that might be required for storage/filesystems.
Dropped packages
Fedora
EL10
EL9
Kernel command line and bootloader
These image definitions do set up kernel command line with focus on console and serial console. This is very useful in cockpit where console is fully native. Therefore I am including those arguments, but leaving out the speed which is not needed in virtualized environments.
I noticed that in other cloud environments we do also set grub2 kernel command line too. Shall we do that here?
Also, in other images we disable recovery, I did not find this in our distro defs either, so left this out:
Personally, I would love a shorter timeout but I think we should stick with the default value.
Interface naming in EL9
I am not including the kernel command line option
net.ifnames=0for EL9 image.Git repo organization
Now, few practical things. I am trying to keep as much files as possible out of the containerfile. I noticed that the pattern used in the bootc world is to have a single directory and have the
COPYverb to do all the work, it copies recursively by default.But we will need separate directories per version (when it drifts) and architecture so I created:
The verb actually automatically enforces root:root owner, unless specified otherwise via
--owner, it also respects permissions but applies umask. Generally speaking, it should work and executable files will be kept.Testing the images
The image boots fine, serial console works nicely in libvirt, I cannot see or control grub via serial console because that is currently not configured.
Initial setup - DROPPED
But, the initial-setup never disappears until it is confirmed in TUI/GUI. I think it does not make sense to have it in derived containers, users can add it if they want. Therefore I am removing initial-setup.
RHSM + Lightspeed
Works fine:
tuned - DROPPED
Is disabled by default, recognizes guest automatically: