mirror of
https://github.com/ansible-collections/community.general.git
synced 2026-05-06 21:32:49 +00:00
Add a 'machinectl shell' become_method (#39826)
* Add a 'machinectl shell' become_method * docs: add explanations for the machinectl become_method * docs: machinectl become_method: specify this part is specific to Linux+systemd setups
This commit is contained in:
committed by
Adam Miller
parent
174d7f8ea2
commit
313a46744d
@@ -59,7 +59,7 @@ def set_constant(name, value, export=vars()):
|
||||
|
||||
|
||||
# CONSTANTS ### yes, actual ones
|
||||
BECOME_METHODS = ['sudo', 'su', 'pbrun', 'pfexec', 'doas', 'dzdo', 'ksu', 'runas', 'pmrun', 'enable']
|
||||
BECOME_METHODS = ['sudo', 'su', 'pbrun', 'pfexec', 'doas', 'dzdo', 'ksu', 'runas', 'pmrun', 'enable', 'machinectl']
|
||||
BECOME_ERROR_STRINGS = {
|
||||
'sudo': 'Sorry, try again.',
|
||||
'su': 'Authentication failure',
|
||||
@@ -70,6 +70,7 @@ BECOME_ERROR_STRINGS = {
|
||||
'ksu': 'Password incorrect',
|
||||
'pmrun': 'You are not permitted to run this command',
|
||||
'enable': '',
|
||||
'machinectl': '',
|
||||
} # FIXME: deal with i18n
|
||||
BECOME_MISSING_STRINGS = {
|
||||
'sudo': 'sorry, a password is required to run sudo',
|
||||
@@ -81,6 +82,7 @@ BECOME_MISSING_STRINGS = {
|
||||
'ksu': 'No password given',
|
||||
'pmrun': '',
|
||||
'enable': '',
|
||||
'machinectl': '',
|
||||
} # FIXME: deal with i18n
|
||||
BLACKLIST_EXTS = ('.pyc', '.pyo', '.swp', '.bak', '~', '.rpm', '.md', '.txt')
|
||||
BOOL_TRUE = BOOLEANS_TRUE
|
||||
|
||||
@@ -142,7 +142,7 @@ def check_command(module, commandline):
|
||||
'mount': 'mount', 'rpm': 'yum, dnf or zypper', 'yum': 'yum', 'apt-get': 'apt',
|
||||
'tar': 'unarchive', 'unzip': 'unarchive', 'sed': 'replace, lineinfile or template',
|
||||
'dnf': 'dnf', 'zypper': 'zypper'}
|
||||
become = ['sudo', 'su', 'pbrun', 'pfexec', 'runas', 'pmrun']
|
||||
become = ['sudo', 'su', 'pbrun', 'pfexec', 'runas', 'pmrun', 'machinectl']
|
||||
if isinstance(commandline, list):
|
||||
command = commandline[0]
|
||||
else:
|
||||
|
||||
@@ -557,6 +557,11 @@ class PlayContext(Base):
|
||||
prompt = 'Enter UPM user password:'
|
||||
becomecmd = '%s %s %s' % (exe, flags, shlex_quote(command))
|
||||
|
||||
elif self.become_method == 'machinectl':
|
||||
|
||||
exe = self.become_exe or 'machinectl'
|
||||
becomecmd = '%s shell -q %s %s@ %s' % (exe, flags, self.become_user, command)
|
||||
|
||||
else:
|
||||
raise AnsibleError("Privilege escalation method not found: %s" % self.become_method)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user