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.