salt: salt ssh error with debian 7 on target

salt-ssh and 2 targets ( debian 7 and debian 8 )

salt-ssh ‘*’ -r ‘ifconfig’ = works well with both targets

salt-ssh ‘*’ cmd.run ‘ifconfig’

This command works well with debian 8. But with debian 7 (wheezy) :

web1:
    ----------
    retcode:
        1
    stderr:
        [CRITICAL] Unable to import msgpack or msgpack_pure python modules
        [ERROR   ] An un-handled exception was caught by salt's global exception handler:
        ImportError: No module named backports.ssl_match_hostname
        Traceback (most recent call last):
          File "/tmp/.root_a3a1dc_salt/salt-call", line 4, in <module>
            salt_call()
          File "/tmp/.root_a3a1dc_salt/salt/scripts.py", line 325, in salt_call
            import salt.cli.call
          File "/tmp/.root_a3a1dc_salt/salt/cli/call.py", line 8, in <module>
            import salt.cli.caller
          File "/tmp/.root_a3a1dc_salt/salt/cli/caller.py", line 20, in <module>
            import salt.minion
          File "/tmp/.root_a3a1dc_salt/salt/minion.py", line 83, in <module>
            import salt.pillar
          File "/tmp/.root_a3a1dc_salt/salt/pillar/__init__.py", line 15, in <module>
            import salt.fileclient
          File "/tmp/.root_a3a1dc_salt/salt/fileclient.py", line 29, in <module>
            import salt.utils.http
          File "/tmp/.root_a3a1dc_salt/salt/utils/http.py", line 58, in <module>
            import tornado.simple_httpclient
          File "/tmp/.root_a3a1dc_salt/tornado/simple_httpclient.py", line 8, in <module>
            from tornado.http1connection import HTTP1Connection, HTTP1ConnectionParameters
          File "/tmp/.root_a3a1dc_salt/tornado/http1connection.py", line 30, in <module>
            from tornado import iostream
          File "/tmp/.root_a3a1dc_salt/tornado/iostream.py", line 40, in <module>
            from tornado.netutil import ssl_wrap_socket, ssl_match_hostname, SSLCertificateError, _client_ssl_defaults, _server_ssl_defaults
          File "/tmp/.root_a3a1dc_salt/tornado/netutil.py", line 49, in <module>
            import backports.ssl_match_hostname
        ImportError: No module named backports.ssl_match_hostname
        Traceback (most recent call last):
          File "/tmp/.root_a3a1dc_salt/salt-call", line 4, in <module>
            salt_call()
          File "/tmp/.root_a3a1dc_salt/salt/scripts.py", line 325, in salt_call
            import salt.cli.call
          File "/tmp/.root_a3a1dc_salt/salt/cli/call.py", line 8, in <module>
            import salt.cli.caller
          File "/tmp/.root_a3a1dc_salt/salt/cli/caller.py", line 20, in <module>
            import salt.minion
          File "/tmp/.root_a3a1dc_salt/salt/minion.py", line 83, in <module>
            import salt.pillar
          File "/tmp/.root_a3a1dc_salt/salt/pillar/__init__.py", line 15, in <module>
            import salt.fileclient
          File "/tmp/.root_a3a1dc_salt/salt/fileclient.py", line 29, in <module>
            import salt.utils.http
          File "/tmp/.root_a3a1dc_salt/salt/utils/http.py", line 58, in <module>
            import tornado.simple_httpclient
          File "/tmp/.root_a3a1dc_salt/tornado/simple_httpclient.py", line 8, in <module>
            from tornado.http1connection import HTTP1Connection, HTTP1ConnectionParameters
          File "/tmp/.root_a3a1dc_salt/tornado/http1connection.py", line 30, in <module>
            from tornado import iostream
          File "/tmp/.root_a3a1dc_salt/tornado/iostream.py", line 40, in <module>
            from tornado.netutil import ssl_wrap_socket, ssl_match_hostname, SSLCertificateError, _client_ssl_defaults, _server_ssl_defaults
          File "/tmp/.root_a3a1dc_salt/tornado/netutil.py", line 49, in <module>
            import backports.ssl_match_hostname
        ImportError: No module named backports.ssl_match_hostname
    stdout:

Host :

salt-ssh --versions-report
Salt Version:
           Salt: 2015.8.0

Dependency Versions:
         Jinja2: 2.7.3
       M2Crypto: Not Installed
           Mako: 1.0.0
         PyYAML: 3.11
          PyZMQ: Not Installed
         Python: 2.7.9 (default, Mar  1 2015, 12:57:24)
           RAET: Not Installed
        Tornado: 4.2.1
            ZMQ: Not Installed
           cffi: 0.8.6
       cherrypy: Not Installed
       dateutil: 2.2
          gitdb: Not Installed
      gitpython: Not Installed
          ioflo: Not Installed
        libnacl: Not Installed
   msgpack-pure: Not Installed
 msgpack-python: 0.4.2
   mysql-python: Not Installed
      pycparser: 2.10
       pycrypto: Not Installed
         pygit2: Not Installed
   python-gnupg: Not Installed
          smmap: Not Installed
        timelib: Not Installed

System Versions:
           dist: Debian 8 
        machine: x86_64
        release: 3.16.0-4-amd64
         system: Debian 8

About this issue

  • Original URL
  • State: closed
  • Created 9 years ago
  • Comments: 19 (10 by maintainers)

Most upvoted comments

I’m having the same issue on an Ubuntu 12.04 machine using latest salt-ssh release on Debian Jessie. It’s the only target it fails on - even after deleting /tmp/.$USER_$RANDOM_salt - so it might be a good machine to debug this issue on. I can also say, that it’s not the only Ubuntu 12.04 target I have and it works fine on those other ones.

Correct steps to reproduce issue.

  1. Install Debian 8 from Salt repo
  2. Fill roaster file and run command salt-ssh ‘*’ test.ping
  3. You get error ImportError: No module named backports.ssl_match_hostname
  4. Check content of /var/cache/salt/master/thin/thin.tgz /usr/lib/python2.7/dist-packages/salt/utils# tar -tzf ~/thin.tgz | grep back

Expected result: backports module in /var/cache/salt/master/thin/thin.tgz

As workaround you can install package: aptitude install python-backports.ssl-match-hostname and remove already generated /var/cache/salt/master/thin/thin.tgz After that rerun command: salt-ssh ‘*’ test.ping and it completed successfully. gs-host0: True

Also check thin.tgz content: tar -tzf /var/cache/salt/master/thin/thin.tgz | grep back backports/init.py backports/ssl_match_hostname/init.py