diff --git a/lib/ansible/runner/__init__.py b/lib/ansible/runner/__init__.py index 7b3e48d90c1..8ec2d1a7cae 100644 --- a/lib/ansible/runner/__init__.py +++ b/lib/ansible/runner/__init__.py @@ -101,7 +101,7 @@ class HostVars(dict): def __getitem__(self, host): if host not in self.lookup: result = self.inventory.get_variables(host, vault_password=self.vault_password).copy() - result.update(self.vars_cache) + result.update(self.vars_cache.get(host, {})) self.lookup[host] = template.template('.', result, self.vars_cache) return self.lookup[host] @@ -622,6 +622,7 @@ class Runner(object): inject['environment'] = self.environment inject['playbook_dir'] = os.path.abspath(self.basedir) inject['omit'] = self.omit_token + inject['combined_cache'] = combined_cache return inject @@ -629,7 +630,7 @@ class Runner(object): ''' executes any module one or more times ''' inject = self.get_inject_vars(host) - hostvars = HostVars(inject, self.inventory, vault_password=self.vault_pass) + hostvars = HostVars(inject['combined_cache'], self.inventory, vault_password=self.vault_pass) inject['hostvars'] = hostvars host_connection = inject.get('ansible_connection', self.transport)