From a752e2a4670f3b87a570f03d9b2719f8412ad575 Mon Sep 17 00:00:00 2001 From: Martin Krizek Date: Fri, 19 Jul 2019 08:39:05 +0200 Subject: [PATCH] Clear 'connection related' plugin vars for next loop iteration (#59024) Fixes #58876 --- ...76-do-not-reuse-remote_user-from-prev-loop.yaml | 2 ++ lib/ansible/executor/task_executor.py | 14 ++++++++++++++ 2 files changed, 16 insertions(+) create mode 100644 changelogs/fragments/58876-do-not-reuse-remote_user-from-prev-loop.yaml diff --git a/changelogs/fragments/58876-do-not-reuse-remote_user-from-prev-loop.yaml b/changelogs/fragments/58876-do-not-reuse-remote_user-from-prev-loop.yaml new file mode 100644 index 00000000000..d345b2254be --- /dev/null +++ b/changelogs/fragments/58876-do-not-reuse-remote_user-from-prev-loop.yaml @@ -0,0 +1,2 @@ +bugfixes: + - Do not re-use remote_user from previous loop iteration (https://github.com/ansible/ansible/issues/58876) diff --git a/lib/ansible/executor/task_executor.py b/lib/ansible/executor/task_executor.py index 56b545895d2..6aee5ba845a 100644 --- a/lib/ansible/executor/task_executor.py +++ b/lib/ansible/executor/task_executor.py @@ -412,6 +412,20 @@ class TaskExecutor: results.append(res) del task_vars[loop_var] + # clear 'connection related' plugin variables for next iteration + if self._connection: + clear_plugins = { + 'connection': self._connection._load_name, + 'shell': self._connection._shell._load_name + } + if self._connection.become: + clear_plugins['become'] = self._connection.become._load_name + + for plugin_type, plugin_name in iteritems(clear_plugins): + for var in C.config.get_plugin_vars(plugin_type, plugin_name): + if var in task_vars: + del task_vars[var] + self._task.no_log = no_log return results