diff --git a/lib/ansible/playbook/play.py b/lib/ansible/playbook/play.py index a9700b705b..882d174c0a 100644 --- a/lib/ansible/playbook/play.py +++ b/lib/ansible/playbook/play.py @@ -619,8 +619,14 @@ class Play(object): dirname = self.basedir if original_file: dirname = os.path.dirname(original_file) - include_file = template(dirname, tokens[0], mv) + + # temp vars are used here to avoid trampling on the existing vars structures + temp_vars = utils.merge_hash(self.vars, self.vars_file_vars) + temp_vars = utils.merge_hash(temp_vars, mv) + temp_vars = utils.merge_hash(temp_vars, self.playbook.extra_vars) + include_file = template(dirname, tokens[0], temp_vars) include_filename = utils.path_dwim(dirname, include_file) + data = utils.parse_yaml_from_file(include_filename, vault_password=self.vault_password) if 'role_name' in x and data is not None: for y in data: