1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2024-09-14 20:13:21 +02:00

Fix more become plugins (#708)

* Fix more become plugins.

* Don't re-use var.

* Other way around.
This commit is contained in:
Felix Fontein 2020-07-29 20:27:16 +02:00 committed by GitHub
parent bc5dde0e25
commit 08f10d5758
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 113 additions and 8 deletions

View file

@ -1,2 +1,2 @@
bugfixes: bugfixes:
- doas become plugin - address a bug with the parameters handling that was breaking the plugin in community.general when `become_flags` and `become_user` were not explicitly specified (https://github.com/ansible-collections/community.general/pull/704). - doas become plugin - address a bug with the parameters handling that was breaking the plugin in community.general when ``become_flags`` and ``become_user`` were not explicitly specified (https://github.com/ansible-collections/community.general/pull/704).

View file

@ -0,0 +1,3 @@
bugfixes:
- dzdo become plugin - address a bug with the parameters handling that was breaking the plugin in community.general when ``become_user`` was not explicitly specified (https://github.com/ansible-collections/community.general/pull/708).
- pbrun become plugin - address a bug with the parameters handling that was breaking the plugin in community.general when ``become_user`` was not explicitly specified (https://github.com/ansible-collections/community.general/pull/708).

View file

@ -89,8 +89,7 @@ class BecomeModule(BecomeBase):
self.prompt = '[dzdo via ansible, key=%s] password:' % self._id self.prompt = '[dzdo via ansible, key=%s] password:' % self._id
flags = '%s -p "%s"' % (flags.replace('-n', ''), self.prompt) flags = '%s -p "%s"' % (flags.replace('-n', ''), self.prompt)
user = self.get_option('become_user') become_user = self.get_option('become_user')
if user: user = '-u %s' % (become_user) if become_user else ''
user = '-u %s' % (user)
return ' '.join([becomecmd, flags, user, self._build_success_command(cmd, shell)]) return ' '.join([becomecmd, flags, user, self._build_success_command(cmd, shell)])

View file

@ -13,7 +13,6 @@ DOCUMENTATION = '''
options: options:
become_user: become_user:
description: User you 'become' to execute the task description: User you 'become' to execute the task
default: ''
ini: ini:
- section: privilege_escalation - section: privilege_escalation
key: become_user key: become_user

View file

@ -97,9 +97,8 @@ class BecomeModule(BecomeBase):
become_exe = self.get_option('become_exe') become_exe = self.get_option('become_exe')
flags = self.get_option('become_flags') flags = self.get_option('become_flags')
user = self.get_option('become_user') become_user = self.get_option('become_user')
if user: user = '-u %s' % (become_user) if become_user else ''
user = '-u %s' % (user)
noexe = not self.get_option('wrap_exe') noexe = not self.get_option('wrap_exe')
return ' '.join([become_exe, flags, user, self._build_success_command(cmd, shell, noexe=noexe)]) return ' '.join([become_exe, flags, user, self._build_success_command(cmd, shell, noexe=noexe)])

View file

@ -14,6 +14,27 @@ from ansible import context
from .helper import call_become_plugin from .helper import call_become_plugin
def test_doas_basic(mocker, parser, reset_cli_args):
options = parser.parse_args([])
context._init_global_context(options)
default_cmd = "/bin/foo"
default_exe = "/bin/bash"
doas_exe = 'doas'
doas_flags = '-n'
success = 'BECOME-SUCCESS-.+?'
task = {
'become_method': 'community.general.doas',
}
var_options = {}
cmd = call_become_plugin(task, var_options, cmd=default_cmd, executable=default_exe)
print(cmd)
assert (re.match("""%s %s %s -c 'echo %s; %s'""" % (doas_exe, doas_flags, default_exe, success,
default_cmd), cmd) is not None)
def test_doas(mocker, parser, reset_cli_args): def test_doas(mocker, parser, reset_cli_args):
options = parser.parse_args([]) options = parser.parse_args([])
context._init_global_context(options) context._init_global_context(options)

View file

@ -14,6 +14,27 @@ from ansible import context
from .helper import call_become_plugin from .helper import call_become_plugin
def test_dzdo_basic(mocker, parser, reset_cli_args):
options = parser.parse_args([])
context._init_global_context(options)
default_cmd = "/bin/foo"
default_exe = "/bin/bash"
dzdo_exe = 'dzdo'
dzdo_flags = '-H -S -n'
success = 'BECOME-SUCCESS-.+?'
task = {
'become_method': 'community.general.dzdo',
}
var_options = {}
cmd = call_become_plugin(task, var_options, cmd=default_cmd, executable=default_exe)
print(cmd)
assert re.match("""%s %s %s -c 'echo %s; %s'""" % (dzdo_exe, dzdo_flags, default_exe,
success, default_cmd), cmd) is not None
def test_dzdo(mocker, parser, reset_cli_args): def test_dzdo(mocker, parser, reset_cli_args):
options = parser.parse_args([]) options = parser.parse_args([])
context._init_global_context(options) context._init_global_context(options)

View file

@ -14,6 +14,28 @@ from ansible import context
from .helper import call_become_plugin from .helper import call_become_plugin
def test_ksu_basic(mocker, parser, reset_cli_args):
options = parser.parse_args([])
context._init_global_context(options)
default_cmd = "/bin/foo"
default_exe = "/bin/bash"
ksu_exe = 'ksu'
ksu_flags = ''
success = 'BECOME-SUCCESS-.+?'
task = {
'become_user': 'foo',
'become_method': 'community.general.ksu',
}
var_options = {}
cmd = call_become_plugin(task, var_options, cmd=default_cmd, executable=default_exe)
print(cmd)
assert (re.match("""%s %s %s -e %s -c 'echo %s; %s'""" % (ksu_exe, task['become_user'], ksu_flags,
default_exe, success, default_cmd), cmd) is not None)
def test_ksu(mocker, parser, reset_cli_args): def test_ksu(mocker, parser, reset_cli_args):
options = parser.parse_args([]) options = parser.parse_args([])
context._init_global_context(options) context._init_global_context(options)

View file

@ -14,6 +14,27 @@ from ansible import context
from .helper import call_become_plugin from .helper import call_become_plugin
def test_pbrun_basic(mocker, parser, reset_cli_args):
options = parser.parse_args([])
context._init_global_context(options)
default_cmd = "/bin/foo"
default_exe = "/bin/bash"
pbrun_exe = 'pbrun'
pbrun_flags = ''
success = 'BECOME-SUCCESS-.+?'
task = {
'become_method': 'community.general.pbrun',
}
var_options = {}
cmd = call_become_plugin(task, var_options, cmd=default_cmd, executable=default_exe)
print(cmd)
assert re.match("""%s %s 'echo %s; %s'""" % (pbrun_exe, pbrun_flags,
success, default_cmd), cmd) is not None
def test_pbrun(mocker, parser, reset_cli_args): def test_pbrun(mocker, parser, reset_cli_args):
options = parser.parse_args([]) options = parser.parse_args([])
context._init_global_context(options) context._init_global_context(options)

View file

@ -14,6 +14,26 @@ from ansible import context
from .helper import call_become_plugin from .helper import call_become_plugin
def test_pfexec_basic(mocker, parser, reset_cli_args):
options = parser.parse_args([])
context._init_global_context(options)
default_cmd = "/bin/foo"
default_exe = "/bin/bash"
pfexec_exe = 'pfexec'
pfexec_flags = '-H -S -n'
success = 'BECOME-SUCCESS-.+?'
task = {
'become_method': 'community.general.pfexec',
}
var_options = {}
cmd = call_become_plugin(task, var_options, cmd=default_cmd, executable=default_exe)
print(cmd)
assert re.match('''%s %s "'echo %s; %s'"''' % (pfexec_exe, pfexec_flags, success, default_cmd), cmd) is not None
def test_pfexec(mocker, parser, reset_cli_args): def test_pfexec(mocker, parser, reset_cli_args):
options = parser.parse_args([]) options = parser.parse_args([])
context._init_global_context(options) context._init_global_context(options)