Daemonizing an executable in ansible

Running program with '&' does not make program a daemon, it just runs in background. To make a "true daemon" your program should do steps described here.

If your program is written in C, you can call daemon() function, which will do it for you. Then you can start your program even without '&' at the end and it will be running as a daemon.

The other option is to call your program using daemon, which should do the job as well.

- name: Start daemon
  shell: daemon -- myexeprogram arg1 arg2

When you (or Ansible) log out the exit signal will still be sent to the running process, even though it is running in the background.

You can use nohup to circumvent that.

- name: Start daemon
  shell: nohup myexeprogram arg1 arg2 &

http://en.wikipedia.org/wiki/Nohup