It's entirely intended. For instance, you might have a role that applies a particular configuration to machines that live in a particular datacenter, and one of the things that sets might be the port to use for the database server. That port variable would then be available to other roles.
While this sounds scary at first, Ansible contains safeguards to make sure the variables used in one role are absolutely used there and not clobbered by another. Thus they have guaranteed scope to that role. As such, if you define a variable "port" in two places, each role is guaranteed to be able to read the local value. On Thu, Apr 3, 2014 at 10:09 AM, Marko Lisica <[email protected]>wrote: > Hi, > > I stumbled onto little mind game with ansible today : D . > > I have three roles that are tagged. > > - hosts: vagrant >> sudo: yes >> roles: >> - {role: ansible_users, tags: users} >> - {role: ansible_nginx, tags: nginx} >> - {role: ansible_mysql, tags: mysql} >> > > I have defaults/main.yml for "ansible_users" and "ansible_mysql" in their > respective places. > > This is "ansible_users" defaults: > > --- >> users: >> - user: detlic >> webdir: >> - woodpecker >> - aligator >> - user: keder >> webdir: [] >> > > This is "ansible_mysql" defaults: > > --- >> users: >> - user: detlic >> db: >> - aligatordb >> - woodpeckerdb >> - user: jazavac >> db: >> - badgerdb >> - ddaybdb >> > > I have left NGINX role without "defaults". How I understand things is that > NGINX will inherit "defaults" vars from other roles and use them where it > can. But in this case {{ VARS }} are named the same in both USER and MYSQL > roles. > > NGINX role is before MYSQL from whoom it should inherit vars? In my test > case it inherits it from the LAST role in the list. So in this case it is > MYSQL. If I remove MYSQL role from a list then everything is fine. > > Another thing is if I leave MYSQL role present BUT use TAGS and play roles > with jsut USERS and NGINX tags, still NGINX inherits "defaults" from MYSQL. > > Can someone comment on this. > > -- > 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/eb9bf810-d04e-4998-86e4-72e0ab8aa791%40googlegroups.com<https://groups.google.com/d/msgid/ansible-project/eb9bf810-d04e-4998-86e4-72e0ab8aa791%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]. 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/CAEVJ8QPg4RQo6Ae-K0pLUAkyA6J2W7R53-nxGNmZPR%3DGKKM7iA%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
