From 78fb3217d6be5f79d3f0c8b920533f16dc057028 Mon Sep 17 00:00:00 2001 From: Brian Coca Date: Mon, 17 Nov 2014 15:03:49 -0500 Subject: [PATCH] service now detects systemd is actually running, not just installed --- lib/ansible/modules/system/service.py | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/lib/ansible/modules/system/service.py b/lib/ansible/modules/system/service.py index 6093717bcee..61915709703 100644 --- a/lib/ansible/modules/system/service.py +++ b/lib/ansible/modules/system/service.py @@ -394,8 +394,24 @@ class LinuxService(Service): location[binary] = self.module.get_bin_path(binary) def check_systemd(name): - # verify service is managed by systemd - if not location.get('systemctl', None): + # verify systemd is installed (by finding systemctl) + if not location.get('systemctl', False): + return False + + systemd_enabled = False + # Check if init is the systemd command, using comm as cmdline could be symlink + try: + f = open('/proc/1/comm', 'r') + except IOError, err: + # If comm doesn't exist, old kernel, no systemd + return False + + for line in f: + if 'systemd' in line: + systemd_enabled = True + break + + if not systemd_enabled: return False # default to .service if the unit type is not specified