summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Cammarata <jimi@sngx.net>2014-11-25 12:06:58 -0800
committerToshio Kuratomi <toshio@fedoraproject.org>2014-11-25 13:01:08 -0800
commit968c56d7654b8609ddd0449295503c564446d8f3 (patch)
treeb010072eb531be324dbff408f12bc3de004ee4cc
parent9a77aefc338d15c5fe5c1407200cff7eeb8dfd16 (diff)
downloadansible-968c56d7654b8609ddd0449295503c564446d8f3.tar.gz
Expand playbook_dir in time for loading tasks
Fixes #9618
-rw-r--r--lib/ansible/playbook/play.py15
1 files changed, 9 insertions, 6 deletions
diff --git a/lib/ansible/playbook/play.py b/lib/ansible/playbook/play.py
index 0dcbca8684..f63d710be3 100644
--- a/lib/ansible/playbook/play.py
+++ b/lib/ansible/playbook/play.py
@@ -79,17 +79,21 @@ class Play(object):
elif type(self.tags) != list:
self.tags = []
- # make sure we have some special internal variables set
- self.vars['playbook_dir'] = os.path.abspath(self.basedir)
+ # make sure we have some special internal variables set, which
+ # we use later when loading tasks and handlers
+ load_vars = dict()
+ load_vars['playbook_dir'] = os.path.abspath(self.basedir)
if self.playbook.inventory.basedir() is not None:
- self.vars['inventory_dir'] = self.playbook.inventory.basedir()
+ load_vars['inventory_dir'] = self.playbook.inventory.basedir()
if self.playbook.inventory.src() is not None:
- self.vars['inventory_file'] = self.playbook.inventory.src()
+ load_vars['inventory_file'] = self.playbook.inventory.src()
# template the play vars with themselves and the extra vars
# from the playbook, to make sure they're correct
all_vars = utils.combine_vars(self.vars, self.playbook.extra_vars)
+ all_vars = utils.combine_vars(all_vars, load_vars)
self.vars = template(basedir, self.vars, all_vars)
+ self.vars = utils.combine_vars(self.vars, load_vars)
# We first load the vars files from the datastructure
# so we have the default variables to pass into the roles
@@ -157,8 +161,7 @@ class Play(object):
raise errors.AnsibleError('sudo params ("sudo", "sudo_user") and su params '
'("su", "su_user") cannot be used together')
- load_vars = {}
- load_vars['role_names'] = ds.get('role_names',[])
+ load_vars['role_names'] = ds.get('role_names', [])
self._tasks = self._load_tasks(self._ds.get('tasks', []), load_vars)
self._handlers = self._load_tasks(self._ds.get('handlers', []), load_vars)