mirror of
https://github.com/ansible-collections/community.general.git
synced 2026-04-01 16:23:10 +00:00
Support systemd in the service module.
Most of it worked already, except for the enable parameter, because it tried to use chkconfig which only sees SysV services. First look for systemctl and use that if it exists.
This commit is contained in:
@@ -32,7 +32,7 @@ def _find_binaries(m):
|
||||
global CHKCONFIG
|
||||
global INITCTL
|
||||
paths = ['/sbin', '/usr/sbin', '/bin', '/usr/bin']
|
||||
binaries = [ 'service', 'chkconfig', 'update-rc.d', 'initctl']
|
||||
binaries = [ 'service', 'chkconfig', 'update-rc.d', 'initctl', 'systemctl']
|
||||
location = dict()
|
||||
|
||||
for binary in binaries:
|
||||
@@ -44,7 +44,9 @@ def _find_binaries(m):
|
||||
location[binary] = path + '/' + binary
|
||||
break
|
||||
|
||||
if location.get('chkconfig', None):
|
||||
if location.get('systemctl', None):
|
||||
CHKCONFIG = location['systemctl']
|
||||
elif location.get('chkconfig', None):
|
||||
CHKCONFIG = location['chkconfig']
|
||||
elif location.get('update-rc.d', None):
|
||||
CHKCONFIG = location['update-rc.d']
|
||||
@@ -142,17 +144,16 @@ def _do_enable(name, enable):
|
||||
# we change argument depending on real binary used
|
||||
# update-rc.d wants enable/disable while
|
||||
# chkconfig wants on/off
|
||||
valid_argument = dict({'on' : 'on', 'off' : 'off'})
|
||||
|
||||
# also, systemctl needs the arguments reversed
|
||||
if CHKCONFIG.endswith("update-rc.d"):
|
||||
valid_argument['on'] = "enable"
|
||||
valid_argument['off'] = "disable"
|
||||
args = (CHKCONFIG, name, "enable" if enable else "disable")
|
||||
elif CHKCONFIG.endswith("systemctl"):
|
||||
args = (CHKCONFIG, "enable" if enable else "disable", name + ".service")
|
||||
else:
|
||||
args = (CHKCONFIG, name, "on" if enable else "off")
|
||||
|
||||
if enable is not None:
|
||||
if enable:
|
||||
rc, stdout, stderr = _run("%s %s %s" % (CHKCONFIG, name, valid_argument['on']))
|
||||
else:
|
||||
rc, stdout, stderr = _run("%s %s %s" % (CHKCONFIG, name, valid_argument['off']))
|
||||
rc, stdout, stderr = _run("%s %s %s" % args)
|
||||
|
||||
return rc, stdout, stderr
|
||||
|
||||
|
||||
Reference in New Issue
Block a user