From c2435fab7edf39ef5f36d924bee33cb37dd0795d Mon Sep 17 00:00:00 2001 From: James Cammarata Date: Mon, 3 Aug 2015 12:12:45 -0400 Subject: [PATCH] Inject the play context vars into the variables used for loop item templating --- lib/ansible/executor/task_executor.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/ansible/executor/task_executor.py b/lib/ansible/executor/task_executor.py index f83f901e900..b317c72cb5a 100644 --- a/lib/ansible/executor/task_executor.py +++ b/lib/ansible/executor/task_executor.py @@ -141,10 +141,18 @@ class TaskExecutor: and returns the items result. ''' + # create a copy of the job vars here so that we can modify + # them temporarily without changing them too early for other + # parts of the code that might still need a pristine version + vars_copy = self._job_vars.copy() + + # now we update them with the play context vars + self._play_context.update_vars(vars_copy) + items = None if self._task.loop and self._task.loop in lookup_loader: - loop_terms = listify_lookup_plugin_terms(terms=self._task.loop_args, variables=self._job_vars, loader=self._loader, fail_on_undefined=True) - items = lookup_loader.get(self._task.loop, loader=self._loader).run(terms=loop_terms, variables=self._job_vars) + loop_terms = listify_lookup_plugin_terms(terms=self._task.loop_args, variables=vars_copy, loader=self._loader, fail_on_undefined=True) + items = lookup_loader.get(self._task.loop, loader=self._loader).run(terms=loop_terms, variables=vars_copy) return items