Contamos con tu apoyo para compartir nuestros posts en referencia a las ciencias informáticas.
Solución:
Registre una variable cuando se actualice la configuración. Registre otra variable cuando verifique si un servicio se está ejecutando. Llame al controlador de reinicio del servicio solo si ambas variables son true.
En cuanto a los detalles de varios sistemas operativos, podría tener una ejecución condicional basada en la familia/distribución de los datos del host.
de ansible service:
El módulo no proporciona un mecanismo para verificar si un servicio ya se está ejecutando o no. Por lo tanto, tendrá que recurrir a usar algo como esto a través de la shell:
módulo para determinar primero si el servicio se está ejecutando.
Ejemplo
Aquí estoy detectando si WebSphere o Tomcat8 se están ejecutando y luego reinicio el servicio apropiado según su estado.
---
# handles tomcat8
- name: is tomcat8 already running?
shell: service tomcat8 status warn=false
register: _svc_tomcat8
failed_when: _svc_tomcat8.rc != 0 and ("unrecognized service" not in _svc_tomcat8.stderr)
ignore_errors: true
- name: restart tomcat8 if running
service: name=tomcat8 state=restarted
when: "_svc_tomcat8.rc == 0"
# handles WAS
- name: is WebSphere already running?
shell: service Node01_was.init status warn=false
register: _svc_websphere
failed_when: _svc_websphere.rc != 0 and ("unrecognized service" not in _svc_websphere.stderr)
ignore_errors: true
- name: restart WebSphere if running
service: name=Node01_was.init state=restarted
when: "_svc_websphere.rc == 0"
# vim:ft=ansible:
Para invocar el reinicio solo si se actualizó un archivo específico, puede usar un register:
en tu copy:
o template:
tareas para guardar el estado de si el archivo se actualizó. Los resultados de este register:
luego puede incorporarse como parte de la when:
sobre el service: name=XXXX state=restarted
tarea.
Recuerda compartir este tutorial si si solucionó tu problema.