# ansible variables for each os

**URL:** <https://forum.ansible.com/t/ansible-variables-for-each-os/37718>\
**Category:** Ansible Project\
**Tags:** ubuntu\
**Created:** [March 2, 2023, 4:57pm UTC](https://forum.ansible.com/t/ansible-variables-for-each-os/37718 "2023-03-02T16:57:30Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Kathy\_L](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/kathy_l/32/2652_2.png) [@Kathy\_L](https://forum.ansible.com/u/Kathy_L)\
**Post date:** [March 2, 2023, 4:57pm UTC](https://forum.ansible.com/t/ansible-variables-for-each-os/37718/1 "2023-03-02T16:57:30Z")

</div>

In our playbooks, we used to load one OS-specific vars file for all our roles. Now we’d like to move the variables into each role. A method I had to do this before does not seem to be working. For our auditd role, in the vars/main.yml file I have this:

auditd\_pkg:  
CentOS: audit  
Rocky: audit  
Debian: auditd  
Ubuntu: auditd

But it gives me this error:

_argument ‘package’ is of type and we were unable to convert to list:_

How else can I list these variables without having specific os-related files in each role?

---

<div class="post-metadata">

**Author:** ![Walter\_Rowe](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/walter_rowe/32/4506_2.png) [@Walter\_Rowe](https://forum.ansible.com/u/Walter_Rowe)\
**Post date:** [March 2, 2023, 5:33pm UTC](https://forum.ansible.com/t/ansible-variables-for-each-os/37718/2 "2023-03-02T17:33:11Z")

</div>

You need use the ansible\_os\_family fact as a key into your auditd\_pkg dictionary.

{{ auditd\_pkg[ansible\_os\_family] }}

Walter

---

<div class="post-metadata">

**Author:** ![Kathy\_L](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/kathy_l/32/2652_2.png) [@Kathy\_L](https://forum.ansible.com/u/Kathy_L)\
**Post date:** [March 2, 2023, 7:20pm UTC](https://forum.ansible.com/t/ansible-variables-for-each-os/37718/3 "2023-03-02T19:20:51Z")

</div>

That works, thanks!

---

<div class="post-metadata">

**Author:** ![Walter\_Rowe](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/walter_rowe/32/4506_2.png) [@Walter\_Rowe](https://forum.ansible.com/u/Walter_Rowe)\
**Post date:** [March 2, 2023, 7:34pm UTC](https://forum.ansible.com/t/ansible-variables-for-each-os/37718/4 "2023-03-02T19:34:09Z")

</div>

If you think of it as a JSON dictionary this might explain why you had to do that.

This format …

auditd\_pkg:  
CentOS: audit  
Rocky: audit  
Debian: auditd  
Ubuntu: auditd

… is effectively the same as …

auditd\_pkg: { “CentOS”: “audit”, “Rocky”: “audit”, “Debian”: “auditd”, “Ubuntu”: “auditd” }

Just helping …

Walter
