J'apprends Ansible. J'ai un livre de lecture pour nettoyer les ressources, et je veux qu'il ignore toutes les erreurs et continue jusqu'à la fin, puis échoue à la fin s'il y a des erreurs.
Je peux ignorer les erreurs avec
ignore_errors: yes
Si c’était une tâche, je pourrais faire quelque chose comme:
- name: this command prints FAILED when it fails
command: /usr/bin/example-command -x -y -z
register: command_result
ignore_errors: True
- name: fail the play if the previous command did not succeed
fail: msg="the command failed"
when: "'FAILED' in command_result.stderr"
Comment puis-je échouer à la fin? J'ai plusieurs tâches, quelle serait ma condition "quand"?
Utilisez le module Fail .
- fail: msg="The execution has failed because of errors." when: flag == "failed"
Mise à jour:
Utilisez register pour stocker le résultat d'une tâche telle que celle que vous avez montrée dans votre exemple. Ensuite, utilisez une tâche comme celle-ci:
- name: Set flag
set_fact: flag = failed
when: "'FAILED' in command_result.stderr"
Vous pouvez envelopper toutes les tâches pouvant échouer dans un bloc et utiliser ignore_errors: yes
avec ce bloc.
tasks:
- name: ls
command: ls -la
- name: pwd
command: pwd
- block:
- name: ls non-existing txt file
command: ls -la no_file.txt
- name: ls non-existing pic
command: ls -la no_pic.jpg
ignore_errors: yes
En savoir plus sur la gestion des erreurs dans les blocs ici .
Le module d'échec fonctionne très bien! Merci.
Je devais définir mon fait avant de le vérifier, sinon j'obtiendrais une erreur de variable non définie.
Et j'ai eu des problèmes en réglant le fait avec des guillemets et sans espaces.
Cela a fonctionné:
set_fact: flag="failed"
Cela a jeté des erreurs:
set_fact: flag = failed