Expand playbook_dir in time for loading tasks

Fixes #9618
This commit is contained in:
James Cammarata 2014-11-25 12:06:58 -08:00 committed by Toshio Kuratomi
parent 9a77aefc33
commit 968c56d765

View file

@ -79,17 +79,21 @@ class Play(object):
elif type(self.tags) != list: elif type(self.tags) != list:
self.tags = [] self.tags = []
# make sure we have some special internal variables set # make sure we have some special internal variables set, which
self.vars['playbook_dir'] = os.path.abspath(self.basedir) # 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: 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: 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 # template the play vars with themselves and the extra vars
# from the playbook, to make sure they're correct # 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(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 = template(basedir, self.vars, all_vars)
self.vars = utils.combine_vars(self.vars, load_vars)
# We first load the vars files from the datastructure # We first load the vars files from the datastructure
# so we have the default variables to pass into the roles # so we have the default variables to pass into the roles
@ -157,7 +161,6 @@ class Play(object):
raise errors.AnsibleError('sudo params ("sudo", "sudo_user") and su params ' raise errors.AnsibleError('sudo params ("sudo", "sudo_user") and su params '
'("su", "su_user") cannot be used together') '("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._tasks = self._load_tasks(self._ds.get('tasks', []), load_vars)