Vous pouvez vérifier avec le failed
filtre Jinja2 après avoir exécuté votre commande qui vérifie si le processus est en cours d'exécution.
Voici un exemple qui utilise la sortie de la commande systemctl status apache2
pour décider si Apache est en cours d'exécution:
- name: Check if Apache is running
command: systemctl status apache2
ignore_errors: yes
changed_when: false
register: service_apache_status
- name: Report status of Apache
fail:
msg: |
Service apache2 is not running.
Output of `systemctl status apache2`:
{{ service_apache_status.stdout }}
{{ service_apache_status.stderr }}
when: service_apache_status | failed
Si la commande de la première tâche a échoué, la deuxième tâche échouera et montrera pourquoi la première tâche a échoué.
Le code retour est stocké dans service_apache_status.rc
.
Exemple de sortie d'un échec:
TASK: [Check if Apache is running] ***********************
failed: [localhost] => {"changed": false, "cmd": ["systemctl", "status", "apache2"], "delta": "0:00:00.009379", "end": "2016-06-06 15:17:27.827172", "rc": 3, "start": "2016-06-06 15:17:27.817793", "stdout_lines": ["* apache2.service", " Loaded: not-found (Reason: No such file or directory)", " Active: inactive (dead)"], "warnings": []}
stdout: * apache2.service
Loaded: not-found (Reason: No such file or directory)
Active: inactive (dead)
...ignoring
TASK: [Report status of Apache] ***************************
failed: [localhost] => {"failed": true}
msg: apache2 is not running
systemctl status apache2 output:
* apache2.service
Loaded: not-found (Reason: No such file or directory)
Active: inactive (dead)
Voici une manière différente (mais peut-être moins fiable) d'utiliser pgrep
, pour vérifier si le processus est en cours d'exécution:
- name: Check if Apache is running
shell: pgrep apache2
ignore_errors: yes
changed_when: false
register: service_apache_status
- name: Report status of Apache
fail:
msg: |
Service apache2 is not running.
Return code from `pgrep`:
{{ service_apache_status.rc }}
when: service_apache_status.rc != 0
when: service_apache_status | failed
marche? Cherche-t-il unfailed
jetonservice_apache_status
?0
, il est pris en comptefailed
.pgrep apache2
pgrep
!Voici ce que je fais maintenant:
failed_when
est introduit en 1.4.changed_when: False
est utilisé pour supprimer le changement d'état. Lisez plus .la source