Prüfen Sie, ob der Dienst mit Ansible @ existier

Ich habe ein Ansible-Playbook zum Bereitstellen einer Java-App als init.d-Daemon.

ls Anfänger in Ansible und Linux habe ich Probleme, Aufgaben auf einem Host abhängig vom Status des Hosts bedingt auszuführen.

Namely Ich habe einige Hosts, bei denen der Dienst bereits vorhanden ist und ausgeführt wird, wo ich ihn stoppen möchte, bevor ich etwas anderes tue. Und dann könnte es neue Hosts geben, die den Service noch nicht haben. Also kann ich nicht einfach @ verwendservice: name={{service_name}} state=stopped, da dies auf neuen Hosts fehlschlägt.

Wie kann ich das erreichen? Folgendes habe ich bisher:

  - 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

Antworten auf die Frage(10)

Ihre Antwort auf die Frage