2017-08-08 4 views
1

Saltstack est responsable de la mise à jour du code de l'application web (uwsgi, Python, si c'est important). L'idée est de mettre à jour le code à partir d'une archive. Ce serait bien d'utiliser une seule commande de sel pour cela - state.highstate. Le problème est que pendant la mise à jour le code de l'application ne doit pas être en cours d'exécution, donc service.stop et service.start sont exécutés autour du state.highstate.Stop-update-start avec saltstack highstate?

Existe-t-il un moyen d'inclure cette logique de mise à jour dans l'état élevé? Ou peut-être qu'il y a une autre commande, qui est plus appropriée?

Répondre

0

Trouvé dans le Mastering SaltStack, 2e édition par Joseph Hall ce qui suit.

..., considérez une application web qui utilise Apache. Lorsque la base de code sur un serveur de production change, Apache doit être désactivé , afin d'éviter les erreurs avec le code qui n'a pas encore terminé en cours d'installation.

La clé est d'utiliser prereq, voici l'exemple de livre adapté à mes archives cas:

my_service: 
    service: 
    - running 
    - name: my_service 
    - watch: 
     - cmd: my_archive 

my_archive: 
    cmd: 
    - run 
    - name: "/bin/tar -zxf my.tar.gz -C {{ code_dir }}" 
    - require: 
     - file: my.tar.gz 
    ... 

shutdown_my_service: 
    service: 
    - dead 
    - name: my_service 
    - prereq: 
     - cmd: my_archive 

(je ne l'ai pas vérifié exactement comme écrit ici, mais il est facile de voir l'idée)