How about this solution? In `defaults/main.yml`:
java_distribution_packages: Debian: [ 'openjdk-7', 'java-stuff' ] RefHat: [ 'java-runtime-7', 'other-stuff' ] And then, in `tasks/main.yml`: - {{ ansible_pkg_mgr }}: name={{ item }} state=latest witn_items: java_distribution_packages[ansible_os_family] I think that should work fine and let you override java_distribution_packages in inventory. Maciej 2014-06-19 14:40 GMT+02:00 Jeff Geerling <geerling...@gmail.com>: > The technique I usually use for making a role work cross-distro is to do > two things: > > *For variables*: Include a variables file named {{ ansible_os_family > }}.yml (then stick 'Debian.yml' and 'RedHat.yml', etc. into the role's vars > folder. > > *For tasks*: Add "when: ansible_os_family == 'Distribution'" to the task > (where 'Distribution' is Debian, RedHat, etc.). > > This presents an issue; for normal variables that I want to let role users > override easily, I put the variables in the roles 'defaults/main.yml' file. > But for distribution-specific variables (for example, "java_packages" in my > Java > role <https://github.com/geerlingguy/ansible-role-java>), I have to put > the distro-specific vars include files in the main 'vars' folder, so those > variables have higher precedence than, say, group_vars. > > I've bumped into this a few times, but could usually find other ways of > getting the variable I want to take hold. For some users, it's not > possible, thus I have bugs like: Openjdk-7 cannot be installed > <https://github.com/geerlingguy/ansible-role-java/issues/1>. > > What are some possible fixes/other ways to do this? > > I could set up a variable for each distro (like "java_redhat_packages" and > "java_debian_packages", but in some roles, where 5-10 of these would be > needed, I fear maintainability and simplicity would be sacrificed for > variable overridability... > > -- > 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 ansible-project+unsubscr...@googlegroups.com. > To post to this group, send email to ansible-project@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/ansible-project/d8e90023-a27d-4e71-962e-e8919aadfa83%40googlegroups.com > <https://groups.google.com/d/msgid/ansible-project/d8e90023-a27d-4e71-962e-e8919aadfa83%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 ansible-project+unsubscr...@googlegroups.com. To post to this group, send email to ansible-project@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/CAEnKK1yksi6J2QNjDYXbh1iwMwSHgxx1nLjKmOEpEVY2oic78w%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.