2013-10-06 50 views
2

我是Ansible的新手。我试图用一个非常简单的Ansible Playbook在远程主机上启动一个进程。使用可以在远程主机上启动长时间运行的进程

这里是我的剧本看起来像

- 
    hosts: somehost 
    gather_facts: no 
    user: ubuntu 
    tasks: 
    - name: change directory and run jetty server 
     shell: cd /home/ubuntu/code; nohup ./run.sh  
     async: 45 

run.sh调用带有几个参数的Java服务器进程。 我的理解是,在远程计算机上使用异步我的进程会在剧本完成后继续运行(这应该在大约45秒后发生)。

但是,只要我的playbook退出进程, .sh也在远程主机终端上。

任何人都可以解释发生了什么事,我在这里想念什么。

谢谢。

回答

3

给予更长的时间,以异步说6个月或一年甚至更多,这应该没问题。 或者将此进程转换为initscript并使用服务模块。

并添加民意调查:0

1

我同意。由于它长时间运行,我会把它称为服务并像这样运行它。只需创建一个init.d脚本,用“复制”将其推出,然后运行该服务。

5

我有充足的手册来部署我的Play应用程序。我使用shell的命令替换来实现这一点,它为我做了诀窍。我认为这是因为命令替换产生了一个新的子shell实例来执行命令。

- 
    hosts: somehost 
    gather_facts: no 
    user: ubuntu 
    tasks: 
    - name: change directory and run jetty server 
     shell: dummy=$(nohup /run.sh &) chdir={{/home/ubuntu/code}} 
相关问题