- command line values (for example, -u my_user, these are not variables)
- role defaults (defined in role/defaults/main.yml)
- inventory file or script group vars
- inventory group_vars/all
- playbook group_vars/all
- inventory group_vars/*
- playbook group_vars/*
- inventory file or script host vars
- inventory host_vars/*
- playbook host_vars/*
- host facts / cached set_facts
- play vars
- play vars_prompt
- play vars_files
- role vars (defined in role/vars/main.yml)
- block vars (only for tasks in block)
- task vars (only for the task)
- include_vars
- set_facts / registered vars
- role (and include_role) params
- include params
- extra vars (always win precedence)
Last active
November 20, 2025 23:25
-
Star
(154)
You must be signed in to star a gist -
Fork
(35)
You must be signed in to fork a gist
-
-
Save ekreutz/301c3d38a50abbaad38e638d8361a89e to your computer and use it in GitHub Desktop.
Ansible variable precedence (order, hierarchy)
Good stuff
This makes things clear now. Thanks.
I have seen variables in a playbooks/vars/main.yml file, where is that in the list?
Well this list does not seems to fully true. In version 2.7 set_fact does not override role vars.
I.e. https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html#variable-precedence-where-should-i-put-a-variable seems to be more precise.
Great ! Can you link example, please
Super !
Why is everyone so happy about this gist? If anything it should make you scream and tear your hair out because your company or you have chosen an ungodly BAD tool for a task it wasn't really designed to do...
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Awesome Gist!! Very helpful.