Skip to content

Commit

Permalink
light editing of variable precedence list wording
Browse files Browse the repository at this point in the history
QA had asked me a while ago to clean up the way the precedence list for 1.x was worded,
as the intro from the list started with "then comes", as if something should preceed
it. The comments from OxABAB were not helpful themselves, but his issue reminded me that
this was on my to do list to make a little cleaner and clearer.  Edits made to remove the
"then comes" intros for each list line, to help with clarity.
  • Loading branch information
Sandra Wills committed Feb 19, 2016
1 parent c4e4dd3 commit c172a28
Showing 1 changed file with 12 additions and 11 deletions.
23 changes: 12 additions & 11 deletions docsite/rst/playbooks_variables.rst
Original file line number Diff line number Diff line change
Expand Up @@ -586,7 +586,7 @@ in Ansible. Effectively registered variables are just like facts.
.. _accessing_complex_variable_data:

Accessing Complex Variable Data
```````````````````````````````
````````````````````````````````

We already talked about facts a little higher up in the documentation.

Expand Down Expand Up @@ -758,19 +758,20 @@ If multiple variables of the same name are defined in different places, they get

.. include:: ansible_ssh_changes_note.rst

In 1.x the precedence is (last listed wins):
In 1.x, the precedence is as follows (with the last listed variables winning prioritization):

* then "role defaults", which are the most "defaulty" and lose in priority to everything.
* then come the variables defined in inventory
* then come the facts discovered about a system
* then comes "most everything else" (command line switches, vars in play, included vars, role vars, etc)
* then come connection variables (``ansible_user``, etc)
* "role defaults", which lose in priority to everything and are the most easily overridden
* variables defined in inventory
* facts discovered about a system
* "most everything else" (command line switches, vars in play, included vars, role vars, etc.)
* connection variables (``ansible_user``, etc.)
* extra vars (``-e`` in the command line) always win

.. note:: In versions prior to 1.5.4, facts discovered about a system were in the "most everything else" category above.
.. note::

In versions prior to 1.5.4, facts discovered about a system were in the "most everything else" category above.

In 2.x we have made the order of precedence more specific (last listed wins):
In 2.x, we have made the order of precedence more specific (with last listed variables winning prioritization):

* role defaults [1]_
* inventory vars [2]_
Expand All @@ -787,7 +788,7 @@ In 2.x we have made the order of precedence more specific (last listed wins):
* role and include vars
* block vars (only for tasks in block)
* task vars (only for the task)
* extra vars
* extra vars (always win precedence)

Basically, anything that goes into "role defaults" (the defaults folder inside the role) is the most malleable and easily overridden. Anything in the vars directory of the role overrides previous versions of that variable in namespace. The idea here to follow is that the more explicit you get in scope, the more precedence it takes with command line ``-e`` extra vars always winning. Host and/or inventory variables can win over role defaults, but not explicit includes like the vars directory or an ``include_vars`` task.

Expand Down Expand Up @@ -815,7 +816,7 @@ but they behave like other variables, so if you really want to override the remo
.. _variable_scopes:

Variable Scopes
```````````````
````````````````

Ansible has 3 main scopes:

Expand Down

0 comments on commit c172a28

Please sign in to comment.