Filename variables in static inclusion could only be defined in 3 places , any one is ok.
1. extra vars from command line 2. in *vars* section of the playbook, not the *vars* or *defaults* directory of the role 3. in *vars_file* section of the playbook I don't see non used from your description. I have published a repo in github <https://github.com/rhops/ansible-static-include-demo> to show the usage of all the ways to define the filename variables. Basically, you should pay attention to the 2 commits 1 shows how to define variables in *vars* sessions of the playbook <https://github.com/rhops/ansible-static-include-demo/commit/594aca1ddef3f3e888588cd0990fa7fd97e0054b> 2 shows how to define variables in *vars_file* session of the playbook <https://github.com/rhops/ansible-static-include-demo/commit/fa29542da30eb98ecf22c6b55d54ecddc1a867cb> On Sat, Jul 8, 2017 at 7:11 PM, Mauricio Tavares <[email protected]> wrote: > 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 a topic in the > Google Groups "Ansible Project" group. > To unsubscribe from this topic, visit https://groups.google.com/d/ > topic/ansible-project/F5ee5LkUPnw/unsubscribe. > To unsubscribe from this group and all its topics, 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/CAHEKYV721oMAVhGE8udo9OEP3PpBq > oAp5bD2TrKFJ%3DO0skedKg%40mail.gmail.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/CAOj8uWrBf-ox_DXD%3DBdjv-R-jAdo%3DY9GFU6BeZ2guG6Etr0X9A%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
