Package: ansible
Version: 2.2.1.0-2
Severity: normal

Hello,

To summarize, my issue is the same as the one here:
https://github.com/ansible/ansible/issues/21026

Fixes have already been merged:
https://github.com/ansible/ansible/pull/21072
https://github.com/ansible/ansible/pull/23904 # mildly related, but maybe 
should be brought up

and should be already included in 2.3.1.0+dfsg-2 (testing and unstable).

Here are the git commits that resolve this:

```
commit 2f0070639f3af9afca3b0280f89346c12e7b7e12
Author: Brian Coca <[email protected]>
Date:   Mon Feb 6 13:05:29 2017 -0500

    attempt to fix systemd in chroot env
    
    fixes #21026

diff --git a/lib/ansible/modules/system/systemd.py 
b/lib/ansible/modules/system/systemd.py
index c82bed60d..c970bd3ff 100644
--- a/lib/ansible/modules/system/systemd.py
+++ b/lib/ansible/modules/system/systemd.py
@@ -297,6 +297,7 @@ def main():
 
     # check service data, cannot error out on rc as it changes across 
versions, assume not found
     (rc, out, err) = module.run_command("%s show '%s'" % (systemctl, unit))
+
     if rc == 0:
         # load return of systemctl show into dictionary for easy access and 
return
         multival = []
@@ -327,6 +328,18 @@ def main():
             if is_systemd and 'LoadError' in result['status']:
                 module.fail_json(msg="Error loading unit file '%s': %s" % 
(unit, result['status']['LoadError']))
 
+    elif out.find('ignoring request') != -1:
+        # fallback list-unit-files as show does not work on some systems 
(chroot)
+        # not used as primary as it skips some services (like those using 
init.d) and requires .service notation
+        if unit.endswith('.service'):
+            service = unit
+        else:
+            service = '%s.service' % unit
+        (rc, out, err) = module.run_command("%s list-unit-files '%s'" % 
(systemctl, service))
+        if rc == 0:
+            is_systemd = True
+
+
     # Does service exist?
     found = is_systemd or is_initd
     if is_initd and not is_systemd:
```
```
commit fa93bf70968f0b65422bd020a4adf9484dde8751
Author: Brian Coca <[email protected]>
Date:   Wed Feb 8 15:05:11 2017 -0500

    allow more than .service, onus on user

diff --git a/lib/ansible/modules/system/systemd.py 
b/lib/ansible/modules/system/systemd.py
index c970bd3ff..831637064 100644
--- a/lib/ansible/modules/system/systemd.py
+++ b/lib/ansible/modules/system/systemd.py
@@ -33,7 +33,7 @@ options:
     name:
         required: true
         description:
-            - Name of the service.
+            - Name of the service. When using in a chroot environment you 
always need to specify the full name i.e. (crond.service).
         aliases: ['unit', 'service']
     state:
         required: false
@@ -330,12 +330,8 @@ def main():
 
     elif out.find('ignoring request') != -1:
         # fallback list-unit-files as show does not work on some systems 
(chroot)
-        # not used as primary as it skips some services (like those using 
init.d) and requires .service notation
-        if unit.endswith('.service'):
-            service = unit
-        else:
-            service = '%s.service' % unit
-        (rc, out, err) = module.run_command("%s list-unit-files '%s'" % 
(systemctl, service))
+        # not used as primary as it skips some services (like those using 
init.d) and requires .service/etc notation
+        (rc, out, err) = module.run_command("%s list-unit-files '%s'" % 
(systemctl, unit))
         if rc == 0:
             is_systemd = True
```

As this does affect usability for the chroot connector I feel that these fixes 
should be backported.

Please let me know if I'm not doing this correctly or if you need anything more 
from me.

Cheers,
JD


-- System Information:
Debian Release: 9.1
  APT prefers stable
  APT policy: (500, 'stable'), (1, 'unstable')
Architecture: amd64 (x86_64)

Kernel: Linux 4.9.0-3-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_US.utf8, LC_CTYPE=en_US.utf8 (charmap=UTF-8), 
LANGUAGE=en_US.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages ansible depends on:
ii  python                2.7.13-2
ii  python-crypto         2.6.1-7
ii  python-httplib2       0.9.2+dfsg-1
ii  python-jinja2         2.8-1
ii  python-netaddr        0.7.18-2
ii  python-paramiko       2.0.0-1
ii  python-pkg-resources  33.1.1-1
ii  python-yaml           3.12-1

Versions of packages ansible recommends:
ii  python-kerberos   1.1.5-2+b2
ii  python-selinux    2.6-3+b1
pn  python-winrm      <none>
ii  python-xmltodict  0.10.2-1

Versions of packages ansible suggests:
pn  cowsay   <none>
pn  sshpass  <none>

-- no debconf information

Reply via email to