2017-03-28 3 views
0

J'essaye de mettre en place une planification de Saltstack qui vérifiera pour s'assurer qu'un service est exécuté sur le serviteur. Cependant, il ne semble pas que service.running fonctionne comme une fonction sur le calendrier.Saltstack - Planification pour s'assurer que le service ne fonctionne pas

Voici mon fichier run.sls:

test-service-sched: 
    schedule.present: 
     - name: test-service-sched 
     - function: service.running 
     - seconds: 60 
     - job_kwargs: 
      name: test-service 
     - persist: True 
     - enabled: True 
     - run_on_start: True 

Et j'execute les suivantes: salt 'service*' state.apply run

Cela finit avec l'erreur suivante sur le sbire:

2017-03-28 02:47:11,493 [salt.utils.schedule           ][ERROR ][6172] Unhandled exception running service.running 
Traceback (most recent call last): 
    File "/usr/lib/python2.6/site-packages/salt/utils/schedule.py", line 826, in handle_func 
    message=self.functions.missing_fun_string(func)) 
    File "/usr/lib/python2.6/site-packages/salt/utils/error.py", line 36, in raise_error 
    raise ex(message) 
Exception: 'service.running' is not available. 

Je ne l'ai pas vu quelque chose dans la documentation qui dit que je ne peux pas exécuter service.running à partir d'un calendrier. Est-ce une limitation connue de Salt? Ou est-ce que je le fais juste mal?

Je peux utiliser cmd.run, mais cela finit par spammer les journaux avec des erreurs si le service est déjà en cours d'exécution.

Répondre

0

Ainsi, j'ai été pointé dans la bonne direction sur le groupe Google Sel. Il y a une différence entre les modules d'exécution et les modules d'état. Étant donné que service.running est un module d'exécution, et que le calendrier ne supporte que les modules d'état, j'ai dû le faire indirectement. J'ai utilisé 2 fichiers:

schedule.sls:

service_schedule: 
    schedule.present: 
    - function: state.apply 
    - minutes: 1 
    - job_args: 
     - running 

running.sls:

service_running: 
    service.running: 
    - name: test_service 

Maintenant, la course salt 'service*' state.apply schedule a fait exactement ce que je voulais.