后台远程主机上的 ansible 运行 命令
ansible run command on remote host in background
我正在尝试使用 ansible 在多台主机上启动 filebeat(或者就此而言,将 运行 连续按需启动的任何其他进程)进程。我不想让 ansible 等到进程继续 运行ning。我想要 ansible 启动并忘记并出来并将远程进程 运行ning 保留在后台。
我试过使用以下选项:
---
- 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
来自link的简化答案我在评论中提到:
---
- hosts: centos-target
gather_facts: no
tasks:
- shell: "(cd /; python -mSimpleHTTPServer >/dev/null 2>&1 &)"
async: 10
poll: 0
注意子外壳括号。
更新:实际上,没有 async
应该没问题,只是不要忘记重定向标准输出:
- name: start simple http server in background
shell: cd /tmp/www; nohup python -mSimpleHTTPServer </dev/null >/dev/null 2>&1 &
我正在尝试使用 ansible 在多台主机上启动 filebeat(或者就此而言,将 运行 连续按需启动的任何其他进程)进程。我不想让 ansible 等到进程继续 运行ning。我想要 ansible 启动并忘记并出来并将远程进程 运行ning 保留在后台。 我试过使用以下选项:
---
- 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
来自link的简化答案我在评论中提到:
---
- hosts: centos-target
gather_facts: no
tasks:
- shell: "(cd /; python -mSimpleHTTPServer >/dev/null 2>&1 &)"
async: 10
poll: 0
注意子外壳括号。
更新:实际上,没有 async
应该没问题,只是不要忘记重定向标准输出:
- name: start simple http server in background
shell: cd /tmp/www; nohup python -mSimpleHTTPServer </dev/null >/dev/null 2>&1 &