On Thu, Jul 6, 2017 at 8:59 AM, Jeff Li <[email protected]> wrote:
> Hope it is clear.
>
> The directory structure looks like this
>
>
> playbook.yml
> vars/main.yml
> roles/my-roles/handlers/main.yml
> roles/my-roles/handlers/ocata.yml
> roles/my-roles/handlers/kilo.yml
>
>
>
> The roles/my-roles/handlers/main.yml looks like this
>
> ---
> - include: "{{ codename }}".yml
>
>
> The variable codename is defined in  vars/main.yml
>
>
> codename: ocata
>

      That looks very similar to what I am doing (test.yml is my playbook):

raub@desktop:~/dev/ansible$ cat test.yml
---
# file: test.yml
#

- hosts:
  - test

  roles:
  - test
raub@desktop:~/dev/ansible$ cat group_vars/test
---
handlerpath: duck.yml
raub@desktop:~/dev/ansible$ cat roles/test/tasks/main.yml
---
- name: First we need to know the path for the handler file
  debug:
    msg: "Hander Path: {{ handlerpath }}"

- name: So which handler file are we using today?
  shell: "echo Handler path {{ handlerpath }} "
  notify: which handler
raub@desktop:~/dev/ansible$ cat roles/test/handlers/main.yml
---
# test/handlers/main.yml

- include: "{{ handlerpath }}"

# - name: which handler
#   debug:
#           msg: "Hander Path: {{ handlerpath }}"

raub@desktop:~/dev/ansible$ cat roles/test/handlers/duck.yml
---
- name: which handler
  debug:
  msg: "Path = {{ handlerpath }}"
raub@desktop:~/dev/ansible$

The commented debug line is in both the main handler and task files
for me to test whether the variable I created gets there. So if I go
to the main handler file and comment the include statement and
uncomment the debug stuff, I get

raub@desktop:~/dev/ansible$ ansible-playbook  -i hosts test.yml

PLAY [test] ********************************************************************

TASK [Gathering Facts] *********************************************************
ok: [ansibletest]

TASK [test : First we need to know the path for the handler file] **************
ok: [ansibletest] => {
    "changed": false,
    "msg": "Hander Path: duck.yml"
}

TASK [test : So which handler file are we using today?] ************************
changed: [ansibletest]

RUNNING HANDLER [test : which handler] *****************************************
ok: [ansibletest] => {
    "changed": false,
    "msg": "Hander Path: duck.yml"
}

PLAY RECAP *********************************************************************
ansibletest                : ok=4    changed=1    unreachable=0    failed=0

raub@desktop:~/dev/ansible$

But if I run as shown above, it does not seem to be able to include my duck:

[....]
TASK [Gathering Facts] *********************************************************
ok: [ansibletest]

TASK [test : First we need to know the path for the handler file] **************
ok: [ansibletest] => {
    "changed": false,
    "msg": "Hander Path: duck.yml"
}

TASK [test : So which handler file are we using today?] ************************
ERROR! The requested handler 'which handler' was not found in either
the main handlers list nor in the listening handlers list
raub@desktop:~/dev/ansible$

First thing I did was to check if there was no extra blank spaces
around 'which handler'in duck.yml. BTW, just to be on the safe side, I
did then try moving group_vars/test to roles/test/vars/main.yml to see
if it makes any difference (and be closer to your setup). Outcome was
the same. And I am running ansible 2.3.0.0.

>
>
> On Thursday, July 6, 2017 at 11:00:19 AM UTC+8, Mauricio Tavares wrote:
>>
>> On Fri, Jun 23, 2017 at 3:13 AM, Jeff Li <[email protected]> wrote:
>> >
>> > I solved the problem by  using vars_files directive in playbook. The
>> > directory structure looks like
>> >
>> > playbook.yml
>> > vars/main.yml
>> > roles/my-roles/...
>> >
>> > The playbook.yml  looks like
>> >
>> > ---
>> >   hosts: all
>> >   vars_files:
>> >     - vars/main.yml
>> >   tasks:
>> >     ....
>> >   roles:
>> >
>>       I hate to say but I still do not know how are you selecting
>> which handlers to use.
>> >
>> > On Thursday, June 8, 2017 at 6:20:54 PM UTC+8, Mauricio Tavares wrote:
>> >>
>> >> So I am running ansible 2.3.0.0. What I want to do is to have my
>> >> handlers/main.yml file to include another file (where some handlers
>> >> are defined) whose name depends on a variable defined somewhere else.
>> >> i.e.
>> >>
>> >> - include: stuff"{{ myvariable }}".yml
>> >>
>> >> where myvariable is defined in the file group_vars/all. I also have
>> >>
>> >> [defaults]
>> >> handler_includes_static = True
>> >>
>> >> defined in my ansible.cfg file per
>> >> https://github.com/ansible/ansible/issues/13485. But when I run it I
>> >> get the following message:
>> >>
>> >> ERROR! Error when evaluating variable in include name: stuff"{{
>> >> myvariable }}".yml.
>> >>
>> >> When using static includes, ensure that any variables used in their
>> >> names are defined in
>> >> vars/vars_files or extra-vars passed in from the command line. Static
>> >> includes cannot use
>> >> variables from inventory sources like group or host vars.
>> >>
>> >> Where does it want me to define myvariable then? Somewhere in, say,
>> >> roles/role_in_question/vars/main.yml?
>> >
>> > --
>> > 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/b268dafb-3a55-4a24-865e-bf9ccd482d2d%40googlegroups.com.
>> >
>> > 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/580fbe81-65c7-432c-86b8-a7ffb532c193%40googlegroups.com.
>
> 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/CAHEKYV721oMAVhGE8udo9OEP3PpBqoAp5bD2TrKFJ%3DO0skedKg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to