diff --git a/lib/ansible/inventory/__init__.py b/lib/ansible/inventory/__init__.py index 3cd5d8c264..9f97e5256d 100644 --- a/lib/ansible/inventory/__init__.py +++ b/lib/ansible/inventory/__init__.py @@ -661,11 +661,11 @@ class Inventory(object): if group and host is None: # load vars in dir/group_vars/name_of_group base_path = os.path.join(basedir, "group_vars/%s" % group.name) - self._variable_manager.add_group_vars_file(base_path, self._loader) + results = self._variable_manager.add_group_vars_file(base_path, self._loader) elif host and group is None: # same for hostvars in dir/host_vars/name_of_host base_path = os.path.join(basedir, "host_vars/%s" % host.name) - self._variable_manager.add_host_vars_file(base_path, self._loader) + results = self._variable_manager.add_host_vars_file(base_path, self._loader) # all done, results is a dictionary of variables for this particular host. return results diff --git a/lib/ansible/vars/__init__.py b/lib/ansible/vars/__init__.py index 5a576daba7..64ad9e3a14 100644 --- a/lib/ansible/vars/__init__.py +++ b/lib/ansible/vars/__init__.py @@ -272,9 +272,17 @@ class VariableManager: data = self._combine_vars(data, results) else: - data = loader.load_from_file(path) - if data is None: - data = dict() + file_name, ext = os.path.splitext(path) + data = None + if not ext: + for ext in ('', '.yml', '.yaml'): + new_path = path + ext + if loader.path_exists(new_path): + data = loader.load_from_file(new_path) + break + else: + if loader.path_exists(path): + data = loader.load_from_file(path) name = self._get_inventory_basename(path) return (name, data) @@ -286,9 +294,12 @@ class VariableManager: the extension, for matching against a given inventory host name ''' - if loader.path_exists(path): - (name, data) = self._load_inventory_file(path, loader) + (name, data) = self._load_inventory_file(path, loader) + if data: self._host_vars_files[name] = data + return data + else: + return dict() def add_group_vars_file(self, path, loader): ''' @@ -297,9 +308,12 @@ class VariableManager: the extension, for matching against a given inventory host name ''' - if loader.path_exists(path): - (name, data) = self._load_inventory_file(path, loader) + (name, data) = self._load_inventory_file(path, loader) + if data: self._group_vars_files[name] = data + return data + else: + return dict() def set_host_facts(self, host, facts): '''