From e464c238d54cc572e507add241f91b7b7510c30d Mon Sep 17 00:00:00 2001 From: Thomas Constans Date: Tue, 1 Nov 2022 18:33:29 +0100 Subject: [PATCH] mise au point solution --- Readme.md | 21 ++++++++++++++------- ignore_errors.yml | 9 +++++---- try_catch.yml | 23 +++++++++++++++++++++++ 3 files changed, 42 insertions(+), 11 deletions(-) create mode 100644 try_catch.yml diff --git a/Readme.md b/Readme.md index 3bc2491..66d0872 100644 --- a/Readme.md +++ b/Readme.md @@ -1,4 +1,4 @@ -## Gestion des erreurs +# Gestion des erreurs **Tâche**: exploiter, comprendre la réussite / échec d'un module @@ -10,7 +10,7 @@ * https://docs.ansible.com/ansible/latest/playbooks_error_handling.html * support slide 51 -### Ignorer les erreurs +## Ignorer les erreurs Écrivez un playbook permettant: @@ -20,16 +20,17 @@ Faites en sorte que les erreurs d'exécution du playbook soient ignorées. -Voir failed_when.yml +Voir le script *ignore_errors.yml* -#### utiliser le module debug +## utiliser le module debug Utilisez le module debug pour afficher la valeur de la variable *ansible_distribution* des cibles. ```bash ansible cibles -u formation -o -m debug -a "var=ansible_distribution" ``` -#### failed_when: définir soi-même les conditions de réussite / échec d'un module + +## failed_when: définir soi-même les conditions de réussite / échec d'un module Écrivez un playbook permettant: @@ -39,11 +40,17 @@ ansible cibles -u formation -o -m debug -a "var=ansible_distribution" la tâche d'exécution doit échouer uniquement si le script renvoie la valeur 2. -#### register: Exploiter le résultat de l'exécution d'un module +Voir le script *failed_when.yml* + +## register: Exploiter le résultat de l'exécution d'un module Complétez le playbook précédemment mis au point afin qu'il: - exécute une tâche de votre choix uniquement si le script a renvoyée la valeur 1 -Solutions: voir branche "solution" \ No newline at end of file +## gestion des exceptions: exécuter une tâche si une tâche échoue + +reprendre l'atelier "Ignorer les erreurs" précédent. Faire en sorte que le message "fin d'exécution du playbook" s'affiche même en cas d'erreur, mais sans ignore_errors + +Voir le script *try_catch.yml* \ No newline at end of file diff --git a/ignore_errors.yml b/ignore_errors.yml index 0f1d385..2e9841d 100644 --- a/ignore_errors.yml +++ b/ignore_errors.yml @@ -4,14 +4,15 @@ tasks: - name: send script copy: - src: random.sh - dest: /tmp//random.sh + src: bad.sh + dest: /tmp//bad.sh mode: 0750 - name: execute script - command: /tmp//random.sh + command: /tmp//bad.sh register: result - failed_when: 2|string in result.stdout + ignore_errors: true + - name: display result debug: diff --git a/try_catch.yml b/try_catch.yml new file mode 100644 index 0000000..960a559 --- /dev/null +++ b/try_catch.yml @@ -0,0 +1,23 @@ + +--- +- hosts: cibles + tasks: + - name: send and execute script + block: + - name: send script + copy: + src: bad.sh + dest: /tmp//bad.sh + mode: 0750 + + - name: execute script + command: /tmp//bad.sh + register: result + always: + - name: display result whatever happened previously + debug: + var: result + rescue: + - name: display only if one of task in block failed + debug: + msg: "Something bad happened" \ No newline at end of file