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 <[email protected]>:

> 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 [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/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 [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/CAEnKK1yksi6J2QNjDYXbh1iwMwSHgxx1nLjKmOEpEVY2oic78w%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to