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:
parent
bc5dde0e25
commit
08f10d5758
10 changed files with 113 additions and 8 deletions
|
@ -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).
|
||||||
|
|
3
changelogs/fragments/708-set-correct-default-values.yml
Normal file
3
changelogs/fragments/708-set-correct-default-values.yml
Normal 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).
|
|
@ -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)])
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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)])
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Loading…
Reference in a new issue