From f1386bb1141f8d8b3ba05f190753f9d3f39cad78 Mon Sep 17 00:00:00 2001 From: James Cammarata Date: Wed, 3 Dec 2014 09:27:27 -0600 Subject: [PATCH] Use more variable sources when templating the play ds Fixes #9699 --- lib/ansible/playbook/play.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/ansible/playbook/play.py b/lib/ansible/playbook/play.py index 882d174c0a5..6e7cc0fc94b 100644 --- a/lib/ansible/playbook/play.py +++ b/lib/ansible/playbook/play.py @@ -108,10 +108,16 @@ class Play(object): self._update_vars_files_for_host(None) # template everything to be efficient, but do not pre-mature template - # tasks/handlers as they may have inventory scope overrides + # tasks/handlers as they may have inventory scope overrides. We also + # create a set of temporary variables for templating, so we don't + # trample on the existing vars structures _tasks = ds.pop('tasks', []) _handlers = ds.pop('handlers', []) - ds = template(basedir, ds, self.vars) + + temp_vars = utils.merge_hash(self.vars, self.vars_file_vars) + temp_vars = utils.merge_hash(temp_vars, self.playbook.extra_vars) + + ds = template(basedir, ds, temp_vars) ds['tasks'] = _tasks ds['handlers'] = _handlers