[tripleo] Package dependencies, podman, dnf modules
Cédric Jeanneret
cjeanner at redhat.com
Tue Jan 5 11:02:52 UTC 2021
On 1/5/21 11:48 AM, Cédric Jeanneret wrote:
>
>
> On 1/5/21 9:56 AM, Marios Andreou wrote:
>>
>>
>> On Tue, Jan 5, 2021 at 9:44 AM Cédric Jeanneret <cjeanner at redhat.com
>> <mailto:cjeanner at redhat.com>> wrote:
>>
>> Hello there,
>>
>> Since we introduced Podman instead of Docker in tripleo, we are running
>> after the right version.
>> For now, the version we should use is provided by a specific
>> container-tools module stream (container-tools:2.0). The default stream
>> being container-tools:rhel8, we might end with a deployed undercloud
>> running the wrong podman version, leading to some nice issues,
>> especially in a SELinux-enabled environment.
>>
>>
>> o/ Tengu thanks for socialising that issue, it's a fun one for sure...
>>
>> first question is _where_ is that the default and it is mostly
>> rhetorical as I can guess. In general though i think it's worth filing a
>> LP bug with some of these details so we can also track whatever is
>> decided as a fix here.
>
> Right - always hard to find the right starting point ;). Though a mail
> would be a nice thing in order to get directions/ideas - and, hey, you
> just pointed some already!
> Here's the LP:
> https://bugs.launchpad.net/tripleo/+bug/1910217
>
>>
>>
>> Currently, the main dependency tree is:
>> python3-tripleoclient requires podman
>> That's mostly all.
>>
>> While we can, of course, edit the python3-tripleoclient spec file in
>> order to pin the precise podman version (or, at least, set upper and
>> lower constraints) in order to target the version provided by the right
>> stream, it's not ideal:
>> - package install error will lead to more questions (since ppl might
>> skip doc for #reason)
>> - if we change the target version, we'll need to ensure it's present in
>> a stream (and, well, update the doc if we need to switch the stream)
>> - and probably some other reasons.
>>
>> Since we can NOT depend on a specific stream in rpm (for instance, we
>> can't put "Requires @container-tools:2.0/podman" like we might in
>> ansible), we're a bit stuck.
>>
>> An ugly hack is tested in the spec file[1], using a bash thing in order
>> to check the activated stream, but this is not ideal either, especially
>> since it makes the whole package building/checking fail during the
>> "mock" stage. In order to make it pass, we'd need to modify the whole
>> RDO in order to take into account stream switching. This isn't
>> impossible, but it leads to other concerns, especially when it comes to
>> "hey we need to switch the stream for <module>". And I'm pretty sure no
>> one will want to dig into it, for good reasons ;).
>>
>> This leads to a last possibility:
>> drop the "Requires podman" from tripleo dependency tree, and rely on
>>
>>
>> so how does that work in practice though I mean what about
>> python-tripleoclient. Quick grep just now tells me at least the
>> heat-launcher is directly using podman. How do we drop that requirement.
>
> Good catch. Maybe by ordering a bit things and calling the podman
> install bit before calling the heat-launcher? Might be ugly and, well,
> against some of the common practices, but at least it would ensure we
> get what we actually want regarding versions and sources.
>
>>
>>
>> tripleo-ansible to actually enable the correct module, and install
>> podman.
>> This means podman will be installed during the undercloud deploy, for
>> instance as a host_prep_tasks (step_0).
>>
>>
>> I am missing how using tripleo-ansible helps us with the stream
>> question. Do you mean add logic in tripleo-ansible that tests the stream
>> and sets the correct version ?
>
> exactly. Ansible is able to switch module streams, and install packages.
> Basically, we'd "just" need to extend a bit this role/task:
> https://opendev.org/openstack/tripleo-ansible/src/branch/master/tripleo_ansible/roles/tripleo_podman/tasks/tripleo_podman_install.yml
>
> That would make things cleaner, nicer, and more reliable.
Maybe we can keep the dependency as-is, and "just" ensure
tripleo-ansible "tripleo_podman" role sets the right things during the
deploy time?
For instance, we can add a task ensuring we're using the right stream,
then install podman (and buildah). That means heat-launcher might use
the wrong podman version (bleh...) but the finished undercloud should be
fine? Not 100% sure it's really possible, especially since module
switching might fail under some conditions when a package is installed :/.
Guess some testing will be needed as well.
>
>
>>
>> While I'm not that happy with this idea, it's probably not as bad as the
>> other hacks we've tested so far, and would, at last, prevent once for
>> all the usual "it's not working" due to a wrong podman version (and,
>> yes, we get plenty of them, especially in the OSP version).
>>
>> What do you think? Any other way of solving this issue? Remember, we're
>> talking about "ensuring we get the right version, coming from a specific
>> stream" and, especially, "ensure operator can't install the wrong one"
>> (if they don't follow the doc, of if they are using automation that
>> doesn't check actual requirements in the doc"...
>>
>>
>> in general i lean more towards 'ansible tasks' rather than 'bash thing
>> in the specfile' to solve that. Either way though this is us reacting
>> (with some fix/hack/workaround) to a problem that isn't anything to do
>> with TripleO or even OpenStack but rather an OS/packaging issue. So do
>> we have any longer term plans on what you mentioned on IRC just now
>> regarding getting module support for RPM deps (do you mean something in
>> the spec file here?) or is that a complete dead end?
>
> AFAIK, module support within RPM spec file as a standard thing is not in
> the roadmap. Apparently, the ppl behind this "module" concept aren't
> willing to add any sort of support.
> I've worked with Lon (Red Hat side) for the patch in the spec file,
> we've tried multiple ways and, well...... it's really not something I'm
> happy with. One idea I just got was about rpm hooks - iirc there's a
> thing in dnf that might help, have to read some more things about that.
> But I have the feeling this is still the wrong way - unless it's
> considered as a "last security net just to be really-really sure",
> instead of the current usage we have (which is, basically, ensure ppl do
> read the doc and follow it).
>
> So the main thing: it's not a TripleO issue per se - we're just using a
> feature that has a weak support in some cases, and, well, we happen to
> hit one of those cases. As usuall I'd say ;).
>
> Cheers,
>
> C.
>
>>
>> thanks, marios
>>
>>
>> Thank you for your thoughts!
>>
>> Cheers,
>>
>> C.
>>
>>
>> [1] https://review.rdoproject.org/r/#/c/31411/
>> <https://review.rdoproject.org/r/#/c/31411/>
>>
>>
>> --
>> Cédric Jeanneret (He/Him/His)
>> Sr. Software Engineer - OpenStack Platform
>> Deployment Framework TC
>> Red Hat EMEA
>> https://www.redhat.com/ <https://www.redhat.com/>
>>
>
--
Cédric Jeanneret (He/Him/His)
Sr. Software Engineer - OpenStack Platform
Deployment Framework TC
Red Hat EMEA
https://www.redhat.com/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature
Type: application/pgp-signature
Size: 840 bytes
Desc: OpenPGP digital signature
URL: <http://lists.openstack.org/pipermail/openstack-discuss/attachments/20210105/09f60fc5/attachment.sig>
More information about the openstack-discuss
mailing list