Question:
I am trying to start filebeat (or for that matter any other process which will run continuously on demand) process on multiple hosts using ansible. I don’t want ansible to wait till the process keeps on running. I want ansible to fire and forget and come out and keep remote process running in back ground.
I’ve tried using below options:
1 2 3 4 5 6 7 8 9 10 |
--- - 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 |
Answer:
Simplified answer :
1 2 3 4 5 6 7 8 |
--- - hosts: centos-target gather_facts: no tasks: - shell: "(cd /; python -mSimpleHTTPServer >/dev/null 2>&1 &)" async: 10 poll: 0 |
Note subshell parentheses.
Update: actually, you should be fine without async
, just don’t forget to redirect stdout:
1 2 3 |
- name: start simple http server in background shell: cd /tmp/www; nohup python -mSimpleHTTPServer /dev/null 2>&1 & |