Comment puis-je exécuter plusieurs commandes en utilisant Salt Stack?
J'ai essayé d'ajouter:
mypack:
pkg:
- installed
- pkgs:
- mercurial
- git
cmd.run:
- name: 'mkdir -p /opt/mypack'
cmd.run: 'hg pull -u -R /opt/mypack || hg clone -R /opt https://...'
cmd.run: 'ln -s /opt/mypack/etc/init.d/xxx /etc/init.d/xxx'
Mais pour une raison quelconque, l'etat semble exécuter/installer, mais les commandes ne sont pas exécutées, ou au moins pas tous.
J'ai besoin d'une solution pour exécuter plusieurs commandes et à l'échec du déploiement si l'un de ces échoue.
Je sais que je pourrais écrire un script bash et inclure ce script bash, mais je cherchais une solution qui fonctionne avec seulement le fichier YAML.
source d'informationauteur sorin
Vous devez vous connecter pour publier un commentaire.
Vous voulez que cela:
Ou ce que je préfère, où le script est téléchargé à partir du master:
En plus de ce qui précède (la meilleure) des suggestions, vous pouvez le faire:
Pour des raisons que je ne comprends pas encore (je suis un Sel novice), le
names
sont itérées dans l'ordre inverse, de sorte que les commandes sont exécutées en arrière.Vous pouvez faire en tant que Dan a souligné, à l'aide de la pipe ou un
cmd.script
état. Mais il convient de noter que vous avez quelques problèmes de syntaxe dans votre post original. Chaque nouvel état a besoin d'unname
arg, vous ne pouvez pas il suffit de mettre la commande après la virgule:Cependant, ce fait peut échouer en tant que bien, parce que je ne pense pas que vous pouvez mettre plusieurs fois le même état sous un ID unique. Ainsi, vous pourriez avoir à les diviser comme ceci: