become flags are primary

with new configuration the sudo flags are always set and become cannot override,
switching to simle 'or' will result in become_flags working.

also sudo_flags are deprecated.
also changed from YAML null causing a 'None' str

fixes #30629
This commit is contained in:
Brian Coca 2017-09-20 17:26:22 -04:00 committed by Brian Coca
parent 0eb0d96286
commit 236d13ac3a
2 changed files with 6 additions and 12 deletions

View file

@ -400,7 +400,7 @@ DEFAULT_BECOME_EXE:
- {key: become_exe, section: privilege_escalation}
DEFAULT_BECOME_FLAGS:
name: Set 'become' executable options
default: ~
default: ''
description: Flags to pass to the privilege escalation executable.
env: [{name: ANSIBLE_BECOME_FLAGS}]
ini:
@ -1001,7 +1001,7 @@ DEFAULT_SU_EXE:
- {key: su_exe, section: defaults}
DEFAULT_SU_FLAGS:
name: su flags
default: ~
default: ''
deprecated:
why: In favor of become which is a generic framework
version: "2.8"

View file

@ -528,19 +528,13 @@ class PlayContext(Base):
command = success_cmd
# set executable to use for the privilege escalation method, with various overrides
exe = self.become_method
for myexe in (getattr(self, '%s_exe' % self.become_method, None), self.become_exe):
if myexe:
exe = myexe
break
exe = self.become_exe or getattr(self, '%s_exe' % self.become_method, self.become_method)
# set flags to use for the privilege escalation method, with various overrides
flags = ''
for myflag in (getattr(self, '%s_flags' % self.become_method, None), self.become_flags):
if myflag is not None:
flags = myflag
break
flags = self.become_flags or getattr(self, '%s_flags' % self.become_method, '')
print(exe)
print(flags)
if self.become_method == 'sudo':
# If we have a password, we run sudo with a randomly-generated
# prompt set using -p. Otherwise we run it with default -n, which makes