Проверьте, существует ли сервис с Ansible

У меня есть Ansible playbook для развертывания приложения Java в качестве демона init.d.

Будучи новичком в Ansible и Linux, у меня возникают проблемы с условным выполнением задач на хосте в зависимости от статуса хоста.

А именно, у меня есть некоторые хосты, на которых служба уже присутствует и работает там, где я хочу остановить ее, прежде чем делать что-либо еще. И тогда могут появиться новые хосты, у которых пока нет сервиса. Так что я не могу просто использоватьservice: name={{service_name}} state=stoppedпотому что это не удастся на новых хостах.

Как я могу этого добиться? Вот что у меня так далеко:

  - 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

Ответы на вопрос(5)

Ваш ответ на вопрос