From 1a4e6e415ef9fa156aecbd7682d309858542c69b Mon Sep 17 00:00:00 2001 From: Serge van Ginderachter Date: Thu, 8 Aug 2013 16:21:03 +0200 Subject: [PATCH] Check for ansible_facts in results for with_ tasks that loop over a lookup plugin. Fixes #3704 and #3735 --- lib/ansible/playbook/__init__.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/lib/ansible/playbook/__init__.py b/lib/ansible/playbook/__init__.py index 716ac597b1..b324454e50 100644 --- a/lib/ansible/playbook/__init__.py +++ b/lib/ansible/playbook/__init__.py @@ -361,8 +361,15 @@ class PlayBook(object): # add facts to the global setup cache for host, result in contacted.iteritems(): - facts = result.get('ansible_facts', {}) - self.SETUP_CACHE[host].update(facts) + if 'results' in result: + # task ran with_ lookup plugin, so facts are encapsulated in + # multiple list items in the results key + for res in result['results']: + facts = res.get('ansible_facts', {}) + self.SETUP_CACHE[host].update(facts) + else: + facts = result.get('ansible_facts', {}) + self.SETUP_CACHE[host].update(facts) # extra vars need to always trump - so update again following the facts self.SETUP_CACHE[host].update(self.extra_vars) if task.register: