2017-05-03 1 views

Répondre

1

Bien. Vous pouvez spécifier qu'un certain état ne sera appliqué que si un autre état est également appliqué avec succès. Comme ceci:

vim: 
    pkg.installed: [] 

/etc/vimrc: 
    file.managed: 
    - source: salt://edit/vimrc 
    - require: 
     - pkg: vim 

Le fichier vimrc ne sera géré que si le paquet vim est installé avec succès. Cela ne pose aucun problème si vim a déjà été installé ou s'il s'agit d'un nouveau paquet installé après cet état. Si pkg: vim est installé avec succès, il exécutera le second état.

Ceci est utile si vous avez un état particulier qui pourrait échouer. Vous pouvez ajouter le require à tous les autres états pour s'assurer qu'ils ne seront appliqués que si cet état est particulièrement réussi.

Pour répondre à votre question: Il n'est pas possible de faire échouer tous les états à l'intérieur de l'état.sls si l'un d'eux échoue. Vous pouvez contourner ce problème en exécutant votre state.sls avec salt '*' state.apply state test=True pour voir ce qui se passerait. Si l'un des états échoue, vous pouvez décider de ne pas appliquer l'état.

J'espère que cela répond à votre question. Si ce n'est toujours pas clair, vous pourriez vouloir donner un exemple :-)

+0

Merci :) C'est ce que je dois être sûr que les choses vont dans le bon sens. – Anatoly

2

Vous pouvez utiliser les conditions requises et tous selon les états échoueront aussi bien que le requis.

Une alternative est de abort toute l'exécution sur un seul échec de l'État:

abort_on_failure_state_example: 
    test.fail_without_changes: 
    - failhard: True 

Aucun autre Etat sera exécuté, même ceux d'autres fichiers inclus de sls. Je l'utilise pour m'assurer que certains grains requis sont définis avant d'appliquer des états, sans avoir à les vérifier/les exiger dans tous les états.

Ceci est documenté dans https://docs.saltstack.com/en/latest/ref/states/failhard.html