Skip to content

Instantly share code, notes, and snippets.

@ekreutz
Last active April 10, 2024 18:39
Show Gist options
  • Save ekreutz/301c3d38a50abbaad38e638d8361a89e to your computer and use it in GitHub Desktop.
Save ekreutz/301c3d38a50abbaad38e638d8361a89e to your computer and use it in GitHub Desktop.
Ansible variable precedence (order, hierarchy)

Ansible variable precedence

Source: http://docs.ansible.com/ansible/latest/playbooks_variables.html#variable-precedence-where-should-i-put-a-variable

From least to most important

  • 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)
@Elmeri
Copy link

Elmeri commented May 22, 2018

Good stuff

@aaronjameshorne
Copy link

This makes things clear now. Thanks.

@quazar0
Copy link

quazar0 commented Nov 7, 2018

I have seen variables in a playbooks/vars/main.yml file, where is that in the list?

@let-thomas
Copy link

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.

@jdaku
Copy link

jdaku commented May 4, 2021

Great ! Can you link example, please

@dbvdb
Copy link

dbvdb commented May 28, 2022

Super !

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment