J'ai une tâche dans le playbook Ansible qui exécute un fichier .jar en arrière-plan, mais après avoir terminé cette tâche, l'application (java) se termine.

- name: Run Java app in the background
  shell: nohup java -jar app.jar &

J'ai besoin que l'application s'exécute pour des tâches plus bas dans le playbook. Des idées?? REMARQUE: lorsque je l'exécute dans la session Putty ssh, il fonctionne correctement et l'application reste en arrière-plan.

1
Luminance 16 janv. 2017 à 15:37

2 réponses

Meilleure réponse

Ok Donc j'ai eu ce problème aujourd'hui et mon script est un peu différent mais fait essentiellement la même chose, c'est donc ce que j'ai, fonctionnant sur Oracle, Centos et RHEL.

Dans le script start_service.sh J'ai ceci, ce script est exécuté sans source.

#!/bin/sh
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd)"
nohup java -jar ${DIR}/$1 --spring.config.location=${DIR}/application.yml --logging.config=${DIR}/logging.xml > ${DIR}/log/output.log 2>&1 &

Dans mon playbook, j'ai:

- name: run service
  shell: "{{ service_install_location }}/application_name/start-service.sh application_name-{{ application_version }}.jar"
  args:
    chdir: "{{ service_install_location }}/application_name"
    executable: /bin/bash

Maintenant, l'argument BASH_SOURCE est spécifique à bash, donc si vous utilisez un ancien sh, vous avez besoin de 0 $. nohup est requis donc lorsque la connexion ssh se termine, votre tâche d'arrière-plan n'est pas tuée (activez -vvv pour ansible pour voir les connexions en cours pour comprendre comment cela se produit sur une machine distante).

Je dois souligner que nous faisons cela temporairement car cela devrait vraiment être installé en tant que service pour être sous le contrôle de service / init.d mais pour l'instant, cela répond à votre question

2
krystan honour 4 juin 2018 à 11:36

La raison la plus probable est attachée IO. Essayer:

- name: Run Java app in the background
  shell: nohup java -jar app.jar </dev/null >/dev/null 2>&1 &
2
Konstantin Suvorov 16 janv. 2017 à 12:58