Commit abe126fb by Stoned Elipot

Define, when possible, the inventory_dir variable

parent 92997ec7
...@@ -141,6 +141,8 @@ period, without the rest of the domain. ...@@ -141,6 +141,8 @@ period, without the rest of the domain.
Don't worry about any of this unless you think you need it. You'll know when you do. Don't worry about any of this unless you think you need it. You'll know when you do.
Also available, *inventory_dir* is the pathname of the directory holding Ansible's inventory host file.
Variable File Separation Variable File Separation
```````````````````````` ````````````````````````
......
...@@ -121,7 +121,10 @@ class PlayBook(object): ...@@ -121,7 +121,10 @@ class PlayBook(object):
self.inventory = inventory self.inventory = inventory
self.basedir = os.path.dirname(playbook) or '.' self.basedir = os.path.dirname(playbook) or '.'
(self.playbook, self.play_basedirs) = self._load_playbook_from_file(playbook) vars = {}
if self.inventory.basedir() is not None:
vars['inventory_dir'] = self.inventory.basedir()
(self.playbook, self.play_basedirs) = self._load_playbook_from_file(playbook, vars)
# ***************************************************** # *****************************************************
...@@ -171,7 +174,7 @@ class PlayBook(object): ...@@ -171,7 +174,7 @@ class PlayBook(object):
for t in tokens[1:]: for t in tokens[1:]:
(k,v) = t.split("=", 1) (k,v) = t.split("=", 1)
incvars[k] = utils.template(basedir, v, incvars) incvars[k] = utils.template(basedir, v, incvars)
included_path = utils.path_dwim(basedir, tokens[0]) included_path = utils.path_dwim(basedir, utils.template(basedir, tokens[0], incvars))
(plays, basedirs) = self._load_playbook_from_file(included_path, incvars) (plays, basedirs) = self._load_playbook_from_file(included_path, incvars)
for p in plays: for p in plays:
if 'vars' not in p: if 'vars' not in p:
......
...@@ -80,8 +80,11 @@ class Play(object): ...@@ -80,8 +80,11 @@ class Play(object):
self._update_vars_files_for_host(None) self._update_vars_files_for_host(None)
self._tasks = self._load_tasks(self._ds.get('tasks', [])) load_vars = {}
self._handlers = self._load_tasks(self._ds.get('handlers', [])) if self.playbook.inventory.basedir() is not None:
load_vars['inventory_dir'] = self.playbook.inventory.basedir();
self._tasks = self._load_tasks(self._ds.get('tasks', []), load_vars)
self._handlers = self._load_tasks(self._ds.get('handlers', []), load_vars)
if self.tags is None: if self.tags is None:
self.tags = [] self.tags = []
......
...@@ -337,6 +337,8 @@ class Runner(object): ...@@ -337,6 +337,8 @@ class Runner(object):
inject['hostvars'] = HostVars(self.setup_cache, self.inventory) inject['hostvars'] = HostVars(self.setup_cache, self.inventory)
inject['group_names'] = host_variables.get('group_names', []) inject['group_names'] = host_variables.get('group_names', [])
inject['groups'] = self.inventory.groups_list() inject['groups'] = self.inventory.groups_list()
if self.inventory.basedir() is not None:
inject['inventory_dir'] = self.inventory.basedir()
# allow with_foo to work in playbooks... # allow with_foo to work in playbooks...
items = None items = None
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment