Skip to content

Commit

Permalink
remove redundant remote_user for local setting
Browse files Browse the repository at this point in the history
  local action plugin already does and this also should fix
  fork/thread issue by removing use of pwd library

  fixes #59642
  • Loading branch information
bcoca authored and mattclay committed Nov 5, 2020
1 parent 5fb6280 commit 488b9d6
Show file tree
Hide file tree
Showing 3 changed files with 4 additions and 8 deletions.
2 changes: 2 additions & 0 deletions changelogs/fragments/play_context_remove_redundant_pwd.yml
@@ -0,0 +1,2 @@
bugfixes:
- remove redundant remote_user setting in play_context for local as plugin already does it, also removes fork/thread issue from use of pwd library.
7 changes: 1 addition & 6 deletions lib/ansible/playbook/play_context.py
Expand Up @@ -22,7 +22,6 @@
__metaclass__ = type

import os
import pwd
import sys

from ansible import constants as C
Expand Down Expand Up @@ -313,15 +312,11 @@ def set_task_and_variable_override(self, task, variables, templar):
elif getattr(new_info, 'connection', None) == 'local' and (not remote_addr_local or not inv_hostname_local):
setattr(new_info, 'connection', C.DEFAULT_TRANSPORT)

# if the final connection type is local, reset the remote_user value to that of the currently logged in user
# this ensures any become settings are obeyed correctly
# we store original in 'connection_user' for use of network/other modules that fallback to it as login user
# connection_user to be deprecated once connection=local is removed for
# network modules
# connection_user to be deprecated once connection=local is removed for, as local resets remote_user
if new_info.connection == 'local':
if not new_info.connection_user:
new_info.connection_user = new_info.remote_user
new_info.remote_user = pwd.getpwuid(os.getuid()).pw_name

# set no_log to default if it was not previously set
if new_info.no_log is None:
Expand Down
3 changes: 1 addition & 2 deletions lib/ansible/plugins/connection/local.py
Expand Up @@ -49,8 +49,7 @@ def _connect(self):
''' connect to the local host; nothing to do here '''

# Because we haven't made any remote connection we're running as
# the local user, rather than as whatever is configured in
# remote_user.
# the local user, rather than as whatever is configured in remote_user.
self._play_context.remote_user = getpass.getuser()

if not self._connected:
Expand Down

0 comments on commit 488b9d6

Please sign in to comment.