Comment poursuivre l'exécution sur tâche échouée après avoir corrigé l'erreur dans le playbook?

lors de l'écriture et du débogage de livres de lecture accessibles, le flux de travail typique est le suivant:

  1. ansible-playbook ./main.yaml
  2. Playbook échoue sur une tâche
  3. corriger cette tâche et répéter la ligne 1, en attendant que toutes les tâches précédentes à exécuter à nouveau. Ce qui prend beaucoup de temps

idéalement, je voudrais reprendre l'exécution sur tâche échouée, avoir l'inventaire et tous les faits recueillis par les tâches précédentes. Est-il même possible? Comment rendre l'écriture/débogage de playbook plus rapide?

42
demandé sur udondan 2015-04-27 18:37:05

2 réponses

regardez http://docs.ansible.com/playbooks_startnstep.html . Si vous voulez commencer à exécuter votre playbook à une tâche particulière, vous pouvez le faire avec l'option --start-at-task :

ansible-playbook playbook.yml --start-at-task="install packages"

ce qui précède commencera à exécuter votre playbook à une tâche appelée " installer des paquets " .

sinon, jetez un coup d'oeil à cette réponse précédente comment exécuter une seule tâche dans une possible playbook?

enfin, quand une pièce échoue, elle vous donne habituellement quelque chose du genre:

PLAY RECAP ******************************************************************** 
           to retry, use: --limit @/home/user/site.retry

utilisez la commande --limit et réessayez.

31
répondu Mxx 2017-05-23 10:31:30

futurs lecteurs:

le --limit @/home/user/site.retry n'aiderait pas dans un tel scénario, le .retry ne stocke que l'hôte défaillant et rien de plus, il n'exécutera donc que toutes les tâches contre les hôtes défaillants.

si vous utilisez la dernière version (Ansible 2.x) le --start-at-task ne fonctionne pas pour les tâches définies à l'intérieur du roles .

vous pouvez obtenir un effet similaire en utilisant simplement le drapeau --step E. g: ansible-playbook playbook.yml --step . Le step vous demande sur avant d'exécuter chaque tâche et vous pouvez choisir (N)o/(y)es/(c)ontinue .

avec cette approche, vous exécutez sélectivement des tâches au besoin et vous continuez aussi à partir du point où elle a échoué, après les corrections.

16
répondu Segmented 2017-08-04 12:37:19