Define, when possible, the inventory_dir variable

This commit is contained in:
Stoned Elipot 2013-03-15 21:42:55 +01:00
parent 92997ec789
commit abe126fbd8
4 changed files with 14 additions and 4 deletions

View file

@ -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
```````````````````````` ````````````````````````

View file

@ -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):
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:

View file

@ -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 = []

View file

@ -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