2016-09-06 7 views
6

Я пытаюсь запустить filebeat (или, в любом случае, любой другой процесс, который будет работать непрерывно по требованию) на нескольких хостах с использованием ansible. Я не хочу ждать, пока процесс продолжит работу. Я хочу, чтобы можно было стрелять, забыть и выйти, а дистанционный процесс работать на заднем плане. Я попытался с помощью следующих параметров:команда ansible run на удаленном хосте в фоновом режиме

--- 
    - hosts: filebeat 
     tasks: 
     - name: start filebeat 
option a) command: filebeat -c filebeat.yml & 
option b) command: nohup filebeat -c filebeat.yml & 
option c) shell: filebeat -c filebeat.yml & 
      async: 0 //Tried without as well. If its > 0 then it only waits for that much of time and terminates the filebeat process on remote host and comes out. 
      poll: 0 
+0

Пожалуйста, обратите внимание: http://superuser.com/questions/870871/run-a -remote-script-application-in-detached-mode-in-ansible –

+0

Я уже прокомментировал этот пост, где он не работает для меня, используя команду daemon –

ответ

14

упрощенный ответ от link я упомянул в комментариях:

--- 
- hosts: centos-target 
    gather_facts: no 
    tasks: 
    - shell: "(cd /; python -mSimpleHTTPServer >/dev/null 2>&1 &)" 
     async: 10 
     poll: 0 

Примечание подоболочка круглые скобки.

Update: на самом деле, вы должны быть хорошо без async, просто не забудьте перенаправить стандартный вывод:

- name: start simple http server in background 
    shell: cd /tmp/www; nohup python -mSimpleHTTPServer </dev/null >/dev/null 2>&1 & 
+0

Ваше решение работает чудом. Большое спасибо мату –

Смежные вопросы