- 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
April 25, 2024 17:43
-
-
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 !
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Awesome Gist!! Very helpful.