summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Coca <brian.coca+git@gmail.com>2018-06-21 17:15:42 -0400
committerMatt Clay <matt@mystile.com>2018-06-25 11:23:52 -0700
commit8fafecc97934356cf221944b90fce80dc87280b6 (patch)
tree0e9228098e1c3d78863a867dbc0c6024440a5d87
parent1fe98e3066620506ae2fa9a1f540ca88c2957659 (diff)
downloadansible-8fafecc97934356cf221944b90fce80dc87280b6.tar.gz
fix vars hostname fallback
also made it optimistic, rely on exceptions instead of copmlex if chains (cherry picked from commit 11dbed1350b81e7959beb5c55118d3bcce793cd5)
-rw-r--r--changelogs/fragments/vars_lk.yml2
-rw-r--r--lib/ansible/plugins/lookup/vars.py14
2 files changed, 9 insertions, 7 deletions
diff --git a/changelogs/fragments/vars_lk.yml b/changelogs/fragments/vars_lk.yml
new file mode 100644
index 0000000000..56f38a3510
--- /dev/null
+++ b/changelogs/fragments/vars_lk.yml
@@ -0,0 +1,2 @@
+bugfixes:
+ - correctly check hostvars for vars term https://github.com/ansible/ansible/pull/41819
diff --git a/lib/ansible/plugins/lookup/vars.py b/lib/ansible/plugins/lookup/vars.py
index fd6d23b5b6..1b1ca60464 100644
--- a/lib/ansible/plugins/lookup/vars.py
+++ b/lib/ansible/plugins/lookup/vars.py
@@ -78,15 +78,15 @@ class LookupModule(LookupBase):
raise AnsibleError('Invalid setting identifier, "%s" is not a string, its a %s' % (term, type(term)))
try:
- if term in myvars:
+ try:
value = myvars[term]
- elif 'hostvars' in myvars and term in myvars['hostvars']:
- # maybe it is a host var?
- value = myvars['hostvars'][term]
- else:
- raise AnsibleUndefinedVariable('No variable found with this name: %s' % term)
- ret.append(self._templar.template(value, fail_on_undefined=True))
+ except KeyError:
+ try:
+ value = myvars['hostvars'][myvars['inventory_hostname']][term]
+ except KeyError:
+ raise AnsibleUndefinedVariable('No variable found with this name: %s' % term)
+ ret.append(self._templar.template(value, fail_on_undefined=True))
except AnsibleUndefinedVariable:
if default is not None:
ret.append(default)