Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
Ansible variable precedence (order, hierarchy)

Ansible variable precedence


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)
Copy link

devarshgandhi1 commented Feb 27, 2018

Awesome Gist!! Very helpful.

Copy link

Elmeri commented May 22, 2018

Good stuff

Copy link

aaronjameshorne commented Sep 20, 2018

This makes things clear now. Thanks.

Copy link

quazar0 commented Nov 7, 2018

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

Copy link

let-thomas commented Nov 21, 2018

Well this list does not seems to fully true. In version 2.7 set_fact does not override role vars.
I.e. seems to be more precise.

Copy link

jdaku commented May 4, 2021

Great ! Can you link example, please

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