Sie können mit dem failed
Jinja2-Filter überprüfen , nachdem Sie Ihren Befehl ausgeführt haben, der überprüft, ob der Prozess ausgeführt wird.
Hier ist ein Beispiel, das anhand der Ausgabe des Befehls systemctl status apache2
entscheidet, ob Apache ausgeführt wird:
- 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
Wenn der Befehl der ersten Aufgabe fehlgeschlagen ist, schlägt die zweite Aufgabe fehl und zeigt an, warum die erste Aufgabe fehlgeschlagen ist.
Der Rückkehrcode wird in gespeichert service_apache_status.rc
.
Beispielausgabe eines Fehlers:
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)
Hier ist eine andere (wenn auch möglicherweise weniger zuverlässige) Methode, um pgrep
zu überprüfen, ob der Prozess ausgeführt wird:
- 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
funktioniert das Sucht es nach einemfailed
Token inservice_apache_status
?