Hello Everyone,
I am new to Ansible world. I am just trying to create a small playbook to install apache2 on Debian 7.4 and Ubuntu14.04 servers.
I have defined few variables in two different yml files - Ubuntu.yml and Debian.yml
My problem is that ansible is ignoring everything is Ubuntu.yml and keep reading variables from Debian.yml. I commented out everything in Ubuntu.yml, still my playbook ran fine as Ansible took values from Debian.yml.
This is a part of my playbook.
`
Am I missing anything ?
Regards,
Vikas
This statement will always be False, I think you want “or”:
ansible_os_family == “Debian” and ansible_distribution == “Ubuntu”
Hi Michael,
I am not sure how would “or” work (though I have tried and it doesn’t) over here. Generally, statement is true in ‘and’ clause when both the conditions are true, which are true in this case.
root@ansible:~# ansible box92.test.com -m setup | egrep -w 'ansible_os_family|ansible_distribution' "ansible_distribution": "Ubuntu", "ansible_os_family": "Debian", root@ansible:~# root@ansible:~# ansible box93.test.com -m setup | egrep -w 'ansible_os_family|ansible_distribution' "ansible_distribution": "Debian", "ansible_os_family": "Debian", root@ansible:~#
I have two Debian based distros - Ubuntu 14.04 and Debian 7.40
Ideally,
-
include: Ubuntu.yml
when: ansible_os_family == “Debian” and ansible_distribution == “Ubuntu” (Should pick up vars/Ubuntu.yml)
-
include: Debian.yml
when: ansible_os_family == “Debian” and ansible_distribution == “Debian” (Should pick up vars/Debian.yml)
I even tried this, but still Ansible pick up variables defined in vars/Debian.yml
`
Or is it ansible only works with ‘ansible_os_family’ fact.
Is there an alternative to do this ?
Regards,
Vikas
Hi Michael,
Thanks for your time on this. I got what I was missing. I was including the variable file with ansible_os_family, I should have used ansible_distribution instead. My bad.
This worked like a charm.
include_vars: "{{ ansible_distribution }}.yml"
Regards,
Vikas