User Tools

Site Tools


ansible:ansible_variables

This is an old revision of the document!


Ansible variables

Understanding variable precedence

Ansible does apply variable precedence, and you might have a use for it. Here is the order of precedence from least to greatest (the last listed variables override all other variables):

      command line values (for example, -u my_user, these are not variables)
      role defaults (defined in role/defaults/main.yml) 1
      inventory file or script group vars 2
      inventory group_vars/all 3
      playbook group_vars/all 3
      inventory group_vars/* 3
      playbook group_vars/* 3
      inventory file or script host vars 2
      inventory host_vars/* 3
      playbook host_vars/* 3
      host facts / cached set_facts 4
      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 (for example, -e "user=my_user")(always win precedence)

In general, Ansible gives precedence to variables that were defined more recently, more actively, and with more explicit scope. Variables in the defaults folder inside a role are easily overridden. Anything in the vars directory of the role overrides previous versions of that variable in the namespace. Host and/or inventory variables override role defaults, but explicit includes such as the vars directory or an include_vars task override inventory variables.

ansible/ansible_variables.1629923847.txt.gz · Last modified: 2021/08/25 22:37 by manu