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