Verifique si el servicio existe con Ansible

Tengo un libro de jugadas Ansible para implementar una aplicación Java como un demonio init.d.

Al ser un principiante tanto en Ansible como en Linux, tengo problemas para ejecutar condicionalmente tareas en un host según el estado del host.

Es decir, tengo algunos hosts que ya tienen el servicio presente y ejecutándose donde quiero detenerlo antes de hacer cualquier otra cosa. Y luego puede haber nuevos hosts, que aún no tienen el servicio. Entonces no puedo simplemente usarservice: name={{service_name}} state=stopped, porque esto fallará en los nuevos hosts.

¿Cómo puedo lograr esto? Esto es lo que tengo hasta ahora:

  - name: Check if Service Exists
    shell: "if chkconfig --list | grep -q my_service;   then echo true;   else echo false; fi;"
    register: service_exists

# This should only execute on hosts where the service is present
  - name: Stop Service
    service: name={{service_name}} state=stopped
    when: service_exists
    register: service_stopped

# This too
  - name: Remove Old App Folder
    command: rm -rf {{app_target_folder}}
    when: service_exists

# This should be executed on all hosts, but only after the service has stopped, if it was present
  - name: Unpack App Archive
    unarchive: src=../target/{{app_tar_name}} dest=/opt

Respuestas a la pregunta(5)

Su respuesta a la pregunta