Right, let me check I get the requirement - so for example we're talking about say an 'apache' role and a 'kibana' role that's going to need a vhost setup.
(with ansible 1.9 at least), if I set a vhost_conf_dir var in my apache role (which is a path to a directory you can drop .vhost files into to have them auto-included, nginx etc. has a similar feature) and then have my kibana role list 'apache' as a dependency in its meta/main.yml, it will be able to see that var and use it. Another way is to explicitly set a 'global' (play wide or host wide, point is its set external to the roles ) vhost_conf_dir and have each role use it (that's less 'magical' so personally I prefer it, it's easier to see what's going on). One downside is the 'kibana' role needs handlers to restart the webserver, which is a bit ugly. Either way, you're going to have 2 roles that are co-dependant and not too re-usable. That would still be the case if you had the exact feature you describe, of course. I'm of the opinion that 'role reuse' is a wild goose chase in CM systems, so I'm fine with that :) On 14 July 2016 at 21:19, Neubyr N <[email protected]> wrote: > > Thank you for the details. I am wondering how to pass file name in one role > to another role as variable parameter. > > As mentioned in previous post, take example of configuring webserver for a > particular application. webserver setup remains same for multiple > applications except configuration file. So if we develop a webserver role > that accepts file path parameter, then same webserver role could be reused > by other application roles. Now it makes sense to keep application specific > webserver configuration file inside application role and pass it's path to > webserver role. This helps in keeping all application specific configuration > files inside a single role. > > If Ansible had some roles path variable or special path 'role', then it > would make above pattern easy. So we could say something like > src=ROLES/myapp/files/testfile . > > It seems like that is not possible with Ansible. > > - N > > > On Thursday, July 14, 2016 at 7:10:54 AM UTC-7, Dick Davies wrote: >> >> On 13 July 2016 at 22:09, Neubyr N <[email protected]> wrote: >> > >> >Right now file name >> > passed to the webserver role is relative path from the playbook file. Is >> > there any way to make this path independent of playbook location and >> > reference it using role directory? >> >> Yes - if you have tasks in a role 'thingy' like this: >> >> - name: config >> copy: src=etc/file.conf >> dest=/etc/file.conf >> >> - name: more config >> template: src=etc/file2.conf.j2 >> dest=/etc/file2.conf >> >> >> then >> >> * the copy task will load its source file from >> roles/thingy/files/etc/file.conf >> * the template task will load its template from >> roles/thingy/templates/etc/file2.conf.j2 -- 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/CAK5eLPT7_QMFf0OTqGo4BWU5g%3DwGnsa30yq7q28cTfex5cMJ2A%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
