2017-09-13 4 views
0

J'ai mis en place une balise qui suit l'utilisation du disque sur tous les serveurs Ubuntu Server 16.04 sur Ubuntu Server 16.04. Nous voulions un réacteur qui nous envoie un e-mail lorsque l'espace disque atteint un certain point. Cette question met l'accent sur la capacité du maître à envoyer un courriel. Quand je lance la commande suivante sur le maître de sel:Saltstack smtp.send_msg retournant avec l'erreur d'attribut

sudo salt-call smtp.send_msg '[email protected]' 'Test message 3' subject='Test subject 3' profile='smtp-default' 

Je reçois le résultat suivant:

[ERROR ] An un-handled exception was caught by salt's global exception handler: 
AttributeError: 'str' object has no attribute 'get' 
Traceback (most recent call last): 
    File "/usr/bin/salt-call", line 11, in <module> 
    salt_call() 
    File "/usr/lib/python2.7/dist-packages/salt/scripts.py", line 391, in salt_call 
    client.run() 
    File "/usr/lib/python2.7/dist-packages/salt/cli/call.py", line 58, in run 
    caller.run() 
    File "/usr/lib/python2.7/dist-packages/salt/cli/caller.py", line 134, in run 
    ret = self.call() 
    File "/usr/lib/python2.7/dist-packages/salt/cli/caller.py", line 204, in call 
    ret['return'] = func(*args, **kwargs) 
    File "/usr/lib/python2.7/dist-packages/salt/modules/smtp.py", line 95, in send_msg 
    server = creds.get('smtp.server') 
AttributeError: 'str' object has no attribute 'get' 
Traceback (most recent call last): 
    File "/usr/bin/salt-call", line 11, in <module> 
    salt_call() 
    File "/usr/lib/python2.7/dist-packages/salt/scripts.py", line 391, in salt_call 
    client.run() 
    File "/usr/lib/python2.7/dist-packages/salt/cli/call.py", line 58, in run 
    caller.run() 
    File "/usr/lib/python2.7/dist-packages/salt/cli/caller.py", line 134, in run 
    ret = self.call() 
    File "/usr/lib/python2.7/dist-packages/salt/cli/caller.py", line 204, in call 
    ret['return'] = func(*args, **kwargs) 
    File "/usr/lib/python2.7/dist-packages/salt/modules/smtp.py", line 95, in send_msg 
    server = creds.get('smtp.server') 
AttributeError: 'str' object has no attribute 'get' 

Ceci est mon sortie sel --versions-rapport du maître qui renvoie l'erreur:

Salt Version: 
      Salt: 2017.7.1 

Dependency Versions: 
      cffi: 1.10.0 
     cherrypy: unknown 
     dateutil: 2.4.2 
     docker-py: Not Installed 
      gitdb: 0.6.4 
     gitpython: 1.0.1 
      ioflo: Not Installed 
     Jinja2: 2.8 
     libgit2: Not Installed 
     libnacl: Not Installed 
     M2Crypto: Not Installed 
      Mako: 1.0.3 
    msgpack-pure: Not Installed 
msgpack-python: 0.4.6 
    mysql-python: Not Installed 
     pycparser: 2.18 
     pycrypto: 2.6.1 
    pycryptodome: Not Installed 
     pygit2: Not Installed 
     Python: 2.7.12 (default, Nov 19 2016, 06:48:10) 
    python-gnupg: Not Installed 
     PyYAML: 3.11 
      PyZMQ: 15.2.0 
      RAET: Not Installed 
      smmap: 0.9.0 
     timelib: Not Installed 
     Tornado: 4.2.1 
      ZMQ: 4.1.4 

System Versions: 
      dist: Ubuntu 16.04 xenial 
     locale: UTF-8 
     machine: x86_64 
     release: 4.4.0-93-generic 
     system: Linux 
     version: Ubuntu 16.04 xenial 

J'ai désinstallé et réinstallé le maître de sel et sel sbire et je l'ai mis à jour Python et le maître de sel. J'ai également créé un autre maître de sel et il a rencontré le même problème. Quelle est la solution ou la solution à cela?

Répondre

0

J'ai découvert que l'erreur n'a rien à voir avec les bibliothèques Python installées ou si mon système est mis à jour ou non. J'ai découvert que je n'avais pas de serveur SMTP configuré et que je devais créer un serveur de messagerie SMTP ou avoir un serveur de messagerie SMTP accessible afin d'envoyer des courriels comme notifications du système de réacteur. J'ai découvert que la solution était de mettre en place un serveur de messagerie SMTP, puis créer un fichier .conf dans le répertoire /etc/salt/minion.d qui fait référence à un serveur de messagerie SMTP comme ceci:

smtp-default: 
    smtp.sender: [email protected] 
    smtp.server: 0.0.0.0 
    smtp.tls: false 

Après avoir créé un Fichier .conf semblable à celui ci-dessus et le profil de la commande salt-call se référant à la déclaration de la fonction du fichier d'état, j'ai été en mesure d'envoyer des courriels à l'adresse désirée.