diff --git a/lib/ansible/plugins/strategy/__init__.py b/lib/ansible/plugins/strategy/__init__.py index ce575fe667..99d65ff385 100644 --- a/lib/ansible/plugins/strategy/__init__.py +++ b/lib/ansible/plugins/strategy/__init__.py @@ -490,25 +490,19 @@ class StrategyBase: if 'ansible_facts' in result_item: + # if delegated fact and we are delegating facts, we need to change target host for them + if original_task.delegate_to is not None and original_task.delegate_facts: + host_list = self.get_delegated_hosts(result_item, original_task) + else: + host_list = self.get_task_hosts(iterator, original_host, original_task) + if original_task.action == 'include_vars': - - if original_task.delegate_to is not None: - host_list = self.get_delegated_hosts(result_item, original_task) - else: - host_list = self.get_task_hosts(iterator, original_host, original_task) - for (var_name, var_value) in iteritems(result_item['ansible_facts']): # find the host we're actually referring too here, which may # be a host that is not really in inventory at all for target_host in host_list: self._variable_manager.set_host_variable(target_host, var_name, var_value) else: - # if delegated fact and we are delegating facts, we need to change target host for them - if original_task.delegate_to is not None and original_task.delegate_facts: - host_list = self.get_delegated_hosts(result_item, original_task) - else: - host_list = self.get_task_hosts(iterator, original_host, original_task) - for target_host in host_list: if original_task.action == 'set_fact': self._variable_manager.set_nonpersistent_facts(target_host, result_item['ansible_facts'].copy())