Puede verificar con el failed
filtro Jinja2 después de ejecutar su comando que verifica si el proceso se está ejecutando.
Aquí hay un ejemplo que usa la salida del comando systemctl status apache2
para decidir si Apache se está ejecutando:
- 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 falla el comando de la primera tarea, la segunda tarea fallará y mostrará por qué la primera tarea falló.
El código de retorno se almacena en service_apache_status.rc
.
Ejemplo de salida de una falla:
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)
Aquí hay una manera diferente (aunque posiblemente menos confiable), usando pgrep
, para verificar si el proceso se está ejecutando:
- 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
funciona? ¿Busca unafailed
fichaservice_apache_status
?0
, se considerafailed
.pgrep apache2
pgrep
!Esto es lo que hago ahora:
failed_when
se introduce en 1.4.changed_when: False
se usa para suprimir el cambio de estado. Leer más .fuente