From 64220fcbcc437d738abcd4397c3733f84d07dc40 Mon Sep 17 00:00:00 2001 From: Brian Coca <brian.coca+git@gmail.com> Date: Fri, 27 Oct 2017 14:00:05 -0400 Subject: [PATCH] ensure we always have a basedir --- lib/ansible/vars/manager.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/ansible/vars/manager.py b/lib/ansible/vars/manager.py index 5c559c8c0f..8a36f496e2 100644 --- a/lib/ansible/vars/manager.py +++ b/lib/ansible/vars/manager.py @@ -232,22 +232,23 @@ class VariableManager: include_delegate_to=include_delegate_to, ) + # default for all cases + basedirs = [self._loader.get_basedir()] + if play: # first we compile any vars specified in defaults/main.yml # for all roles within the specified play for role in play.get_roles(): all_vars = combine_vars(all_vars, role.get_default_vars()) - basedirs = [] if task: # set basedirs if C.PLAYBOOK_VARS_ROOT == 'all': # should be default basedirs = task.get_search_path() - elif C.PLAYBOOK_VARS_ROOT == 'top': # only option pre 2.3 - basedirs = [self._loader.get_basedir()] elif C.PLAYBOOK_VARS_ROOT in ('bottom', 'playbook_dir'): # only option in 2.4.0 basedirs = [task.get_search_path()[0]] - else: + elif C.PLAYBOOK_VARS_ROOT != 'top': + # preserves default basedirs, only option pre 2.3 raise AnsibleError('Unkown playbook vars logic: %s' % C.PLAYBOOK_VARS_ROOT) # if we have a task in this context, and that task has a role, make