On 27/06/14 13:49, Michael DeHaan wrote:
> " For example, a munin role may ask apache role to create a
> virtualhost, if it finds apache is available."
>
> Role dependencies can include "when" statements. The conditionals
> will be applied to each task in the role, so the parameters would need
> to be loaded first, i.e in your role dependencies:
>
> { role: apache, when: has_apache }
>
> Since these happen before the role, you would need to set "has_apache"
> via register or other means prior to including the role that had this
> dependency.
>
> However, in most cases, this is a little too complicated.
>
> Why do munin machines in your infrastructure only sometimes have
> Apache available?
I'm just thinking in terms of contributed roles. I may want to
contribute a munin role that configures a virtualhost only if it detects
the user is including a compatible apache role, because a user may want
to use my contributed munin role, but not my contributed apache.
Munin-apache is just an example. A more generalized use case: services
that may declare fail2ban jails, or monit checks if they detect the
providing roles are already included.
Nevertheless, I think I've grokked (or resigned to) ansible philosophy
and just wanted to point some things that IMHO may help it be a better tool.
>
> I'd probably try to fix that by enforcing consistency with Ansible,
> rather than making it behave too conditionally.
>
> It's almost always cleaner to say "there shall be X" and make it so,
> rather than make some things depend on the state of remote
> infrastructure, which is variable, and then you don't know what you've
> got.
>
>
> On Fri, Jun 27, 2014 at 8:07 AM, "F.L. Jonathan Araña Cruz"
> <[email protected] <mailto:[email protected]>> wrote:
>
> On 26/06/14 17:59, Michael DeHaan wrote:
>> "Would be great to have a magic variable to obtain the path to
>> roles tasks, to allow for things like:"
>>
>> I feel it would be pretty esoteric and infrequently used, we tend
>> to push back on extra magic until enough use cases for them start
>> to appear.
>>
>> Usually roles don't import tasks straight out of other roles, and
>> would use role dependencies in the cases where they did.
>
> Indeed I'd like a role to soft-depend on other. For example, a
> munin role may ask apache role to create a virtualhost, if it
> finds apache is available.
>
> Other example is an apache role that may ask fail2ban role, if
> available, to enable jails for the ports it manages.
>
> My workaround for this is to hihack action plugins -
> https://github.com/sbitmedia/ansible-monit#leverage-monit-in-your-roles
>
>
>
>>
>> You should be able to know the relative pathing in nearly all
>> cases though.
>
> Yes, from my playbooks (or roles) I know the relative path to
> anything, but I can't assume anythin for a role I want to contribute.
>
>
>>
>>
>>
>>
>> On Thu, Jun 26, 2014 at 12:54 PM, "F.L. Jonathan Araña Cruz"
>> <[email protected] <mailto:[email protected]>> wrote:
>>
>> On 26/06/14 14:25, Michael DeHaan wrote:
>>> It's not a bug.
>>>
>>> It's also a little weird, it's not expected that you would
>>> manually include a task file from a role directory without
>>> using roles, but if you wanted to, you would have to path it
>>> in the various subdirectories.
>>
>> Would be great to have a magic variable to obtain the path to
>> roles tasks, to allow for things like:
>>
>> - hosts: hosts
>> roles:
>> - role-apache
>> - role-other
>> tasks:
>> - include:
>> "{{roles_paths['role-apache']}}/create_virtualhost.yml"
>> servername=example.com <http://example.com>
>>
>> There's an issue asking for this, although a bit tangled:
>> https://github.com/ansible/ansible/issues/6955
>>
>>>
>>>
>>>
>>> On Wed, Jun 25, 2014 at 7:03 AM, Руслан Закиров
>>> <[email protected] <mailto:[email protected]>> wrote:
>>>
>>> Hi,
>>>
>>> I hoped for the following to work from a playbook:
>>>
>>> - hosts: backends
>>> roles:
>>> - common
>>> - perl-app
>>> tasks:
>>> - include: a_task_that_sits_in_xxx_role.yml
>>>
>>> But I get:
>>>
>>> ERROR: file could not read:
>>> .../my-ansible/a_task_that_sits_in_xxx_role.yml
>>>
>>> What I expected is that an include in a playbook will
>>> search for a task to include in play's roles.
>>>
>>> Is it a bug?
>>>
>>> --
>>> 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]
>>> <mailto:[email protected]>.
>>> To post to this group, send email to
>>> [email protected]
>>> <mailto:[email protected]>.
>>> To view this discussion on the web visit
>>>
>>> https://groups.google.com/d/msgid/ansible-project/67cb019c-471b-46ca-82d0-46760f8f4677%40googlegroups.com
>>>
>>> <https://groups.google.com/d/msgid/ansible-project/67cb019c-471b-46ca-82d0-46760f8f4677%40googlegroups.com?utm_medium=email&utm_source=footer>.
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>>
>>> --
>>> 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]
>>> <mailto:[email protected]>.
>>> To post to this group, send email to
>>> [email protected]
>>> <mailto:[email protected]>.
>>> To view this discussion on the web visit
>>>
>>> https://groups.google.com/d/msgid/ansible-project/CA%2BnsWgw_Tu3Jbf9-JsYLp6Kc_h%3D4Vchy5jabzavuE21NRMq1rw%40mail.gmail.com
>>>
>>> <https://groups.google.com/d/msgid/ansible-project/CA%2BnsWgw_Tu3Jbf9-JsYLp6Kc_h%3D4Vchy5jabzavuE21NRMq1rw%40mail.gmail.com?utm_medium=email&utm_source=footer>.
>>>
>>>
>>> For more options, visit https://groups.google.com/d/optout.
>>
>> --
>> 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]
>> <mailto:[email protected]>.
>> To post to this group, send email to
>> [email protected]
>> <mailto:[email protected]>.
>> To view this discussion on the web visit
>>
>> https://groups.google.com/d/msgid/ansible-project/53AC502A.6010300%40faita.net
>>
>> <https://groups.google.com/d/msgid/ansible-project/53AC502A.6010300%40faita.net?utm_medium=email&utm_source=footer>.
>>
>>
>> For more options, visit https://groups.google.com/d/optout.
>>
>>
>> --
>> 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]
>> <mailto:[email protected]>.
>> To post to this group, send email to
>> [email protected]
>> <mailto:[email protected]>.
>> To view this discussion on the web visit
>>
>> https://groups.google.com/d/msgid/ansible-project/CA%2BnsWgyrBeMs%3DdvcHh821LM6HiM3PyMHRf-T2xD5vdn8Zq_Tyw%40mail.gmail.com
>>
>> <https://groups.google.com/d/msgid/ansible-project/CA%2BnsWgyrBeMs%3DdvcHh821LM6HiM3PyMHRf-T2xD5vdn8Zq_Tyw%40mail.gmail.com?utm_medium=email&utm_source=footer>.
>>
>>
>> For more options, visit https://groups.google.com/d/optout.
>
> --
> 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]
> <mailto:[email protected]>.
> To post to this group, send email to
> [email protected]
> <mailto:[email protected]>.
> To view this discussion on the web visit
>
> https://groups.google.com/d/msgid/ansible-project/53AD5E8E.6030205%40faita.net
>
> <https://groups.google.com/d/msgid/ansible-project/53AD5E8E.6030205%40faita.net?utm_medium=email&utm_source=footer>.
>
>
> For more options, visit https://groups.google.com/d/optout.
>
>
> --
> 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]
> <mailto:[email protected]>.
> To post to this group, send email to [email protected]
> <mailto:[email protected]>.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/ansible-project/CA%2BnsWgzund%2BCfte7iYWB4f6ZD9GUnOkNpszk4jk6C7cR%2BD-wZA%40mail.gmail.com
> <https://groups.google.com/d/msgid/ansible-project/CA%2BnsWgzund%2BCfte7iYWB4f6ZD9GUnOkNpszk4jk6C7cR%2BD-wZA%40mail.gmail.com?utm_medium=email&utm_source=footer>.
> For more options, visit https://groups.google.com/d/optout.
--
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 post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/ansible-project/53AD6C1C.4090503%40faita.net.
For more options, visit https://groups.google.com/d/optout.