2016-12-07 7 views
0

Я сейчас работаю над развертыванием микросервисов с загрузочной книгой. И все микросервисы используют команду java -jar для развертывания. Прямо сейчас я пытаюсь написать незанятую книгу, чтобы найти и убить зависимый java -jar-процесс, прежде чем развертывать другой.Ansible playbook, чтобы найти конкретный процесс java и убить

У меня заканчиваются идеи здесь. Я думал создать сценарий в init.d для java deamon. Но, если я это сделаю и остановлю службу, это остановит все java-процессы, которые я бы не хотел.

Выход дляps -ef | grep java

корень 28330 1 1 13:52? 00:00:56 java -jar -DCONFIG_FOLDER =/opt/app/microservices/deploy/dal-core/config /opt/app/microservices/deploy/dal-core/enrollment-vehicle-dal-core-0.0.1 -SNAPSHOT.jar

корень 29143 1 2 14:22? 00:00:49 java -jar -DCONFIG_FOLDER =/opt/app/microservices/deploy/dal-core/config /opt/app/microservices/deploy/dal-core/enrollment-vehicle-listener-0.0.1-SNAPSHOT .jar

корень 29879 1 2 14:23? 00:00:48 java -jar -DCONFIG_FOLDER =/opt/app/microservices/deploy/dal-core/config /opt/app/microservices/deploy/dal-core/enrollment-account-dal-core-0.0.1 -SNAPSHOT.jar

корень 31093 1 3 14:28? 00:01:04 java -jar -DCONFIG_FOLDER =/opt/app/microservices/deploy/listener/config /opt/app/microservices/deploy/listener/enrollment-account-listener-0.0.1-SNAPSHOT.jar

asadmin 31208 18879 0 14:57 PTS/1 00:00:00 Grep --color = авто ява

В приведенном выше сценарии, если я случайно не разворачивать регистрации аккаунтам-даль-ядро снова, Я должен 1-й убить регистрацию-аккаунт-слушателя (pid: 31093), а затем зарегистрироваться-account-dal-core (pid: 29879).

У меня есть одна плей-книжка для всех микросервисов, поэтому я не смогу ее жестко кодировать.

ответ

0

Я не уверен, но я надеюсь, что параметр pattern в модуле service решит вашу проблему. Вы можете найти документацию here. Я думаю, что ваша задача анзибля будет выглядеть этот код:

- name: Killing enrollment-account-listener 
    service: 
    name: enrollment-account-listener 
    state: stopped 
    pattern: enrollment-account-listener 

Документация говорит, если сервис с указанным именем не реагирует на команду состояния службы, а затем найти pattern в выходе команды пса. Если строка найдена, предполагается, что служба будет запущена.

Если это не сработает, вы можете использовать модуль command или shell, чтобы найти решение этой проблемы.

+0

Благодарим Вас за отзыв 32cupo. Извините, у меня не было возможности использовать модуль для плей-листов, однако он выглядит идеально. Да, я использовал модуль оболочки для решения проблемы. Что-то вроде этого: «kill $ (ps aux | grep -i« регистрация-аккаунт »| awk '{print $ 2}')" ...........Эта команда будет grep для строки «регистрация-аккаунт» и убить идентификатор процесса :). – Manjil