If you are using awx, you can just create a `collections/requirements.yml`
file that can specify those needed collections.

See: https://github.com/ansible/awx/blob/devel/docs/collections.md

On Mon, Oct 10, 2022 at 10:25 AM Todd Lewis <[email protected]> wrote:

> Alas, these projects all run on AWX, so we can't rely on documented extra
> steps. It needs to work using the existing AWX scm update processes.
>
> We get away with it as long as the required collections are already
> installed in one of the collection path directories. And they often will be
> on local workstations or AWX. But we obviously can't rely on that.
>
> We'll either have to move these roles into our "collection-common" project
> from which we build our common collection, adding the dependencies to
> galaxy.yml there, or we'll need to ensure through our CI pipelines that
> projects pulling in the common roles include their required collections in
> each project's collections/requirements.yml.
>
> This is not at all the answer I was expecting. But at least I can quit
> trying to make the unworkable work.
>
> On Monday, October 10, 2022 at 10:01:08 AM UTC-4 Richard Megginson wrote:
>
>> Right - there is no mechanism in Ansible to do this.  This is what we did
>> for linux system roles -
>> https://linux-system-roles.github.io/documentation/role-requirements.html
>> - basically, made up our own file and rely on documentation.
>>
>> On Mon, Oct 10, 2022 at 7:41 AM Matt Martz <[email protected]> wrote:
>>
>>> You should generally not do this.  If you have content that is
>>> distributed, it should only rely on others of its type.  A standalone role
>>> on a standalone role, or a collection on a collection.  Note that
>>> collections can contain roles.
>>>
>>> As such, there is no automatic installation of dependencies.
>>>
>>> Should you wish to keep your use of standalone roles with dependencies
>>> on collections you would just have to rely on documentation.  And maybe
>>> insert some form of canary test, that tries to use a module you need,
>>> wrapped in a block/rescue that then provides a friendly error when the
>>> module is not available.
>>>
>>> On Mon, Oct 10, 2022 at 8:35 AM Todd Lewis <[email protected]> wrote:
>>>
>>>> We have a handful of "common" roles that are used by many of our
>>>> Ansible projects. These projects list their required roles in their
>>>> respective roles/requirements.yml files. Nothing surprising here; it's
>>>> worked this way for years.
>>>>
>>>> With recent maintenance, one of these "common" roles has started using
>>>> bits from a couple of collections — community.general and ansible.utils.
>>>> From reading the docs, I erroneously thought I could specify those
>>>> collections in meta/requirements.yml like so:
>>>>
>>>> ---
>>>> collections:
>>>>   - name: community.general
>>>>   - name: ansible.utils
>>>>
>>>> However, that's wrong. (See this
>>>> <https://github.com/ansible/ansible/issues/73732> for details.)
>>>> Evidently meta/requirements.yml must be in "v1" format, which is just
>>>> a list of roles; no "roles:" or "collections:" dict allowed.
>>>>
>>>> So how does a required role specify the collections on which it depends?
>>>>
>>>> --
>>>> You received this message because you are subscribed to the Google
>>>> Groups "Ansible Project" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>> an email to [email protected].
>>>> To view this discussion on the web visit
>>>> https://groups.google.com/d/msgid/ansible-project/f6fafb0d-b072-4252-9115-4132663221d9n%40googlegroups.com
>>>> <https://groups.google.com/d/msgid/ansible-project/f6fafb0d-b072-4252-9115-4132663221d9n%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>>
>>>
>>>
>>> --
>>> Matt Martz
>>> @sivel
>>> sivel.net
>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "Ansible Project" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to [email protected].
>>>
>> To view this discussion on the web visit
>>> https://groups.google.com/d/msgid/ansible-project/CAD8N0v-X_3HTBZ-3ex2%2BXh-STOBtdHqTeBHZJEOqMA5KQwjH5g%40mail.gmail.com
>>> <https://groups.google.com/d/msgid/ansible-project/CAD8N0v-X_3HTBZ-3ex2%2BXh-STOBtdHqTeBHZJEOqMA5KQwjH5g%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>> --
> You received this message because you are subscribed to the Google Groups
> "Ansible Project" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/ansible-project/b6d1384d-14cb-4ebc-ba2e-1bf8a7a6001bn%40googlegroups.com
> <https://groups.google.com/d/msgid/ansible-project/b6d1384d-14cb-4ebc-ba2e-1bf8a7a6001bn%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>


-- 
Matt Martz
@sivel
sivel.net

-- 
You received this message because you are subscribed to the Google Groups 
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/CAD8N0v9M62P5chkHFNbjQHdw7THVaFLh0o%2B-ucOToGQS2UBqVw%40mail.gmail.com.

Reply via email to