使用Ansible运行服务器

时间:2016-02-27 12:30:33

标签: ansible ansible-playbook

我刚刚开始使用Ansible,但我在运行服务器时遇到了问题。

我有一台可以使用java -jar target/server-1.0-SNAPSHOT.jar启动的服务器。但是,这将启动服务器并继续运行永久显示输出,因此Ansible永远不会完成。

这是我尝试过的永远不会完成的事情:

- name: Start server
  command: chdir=~/server java -jar target/server-1.0-SNAPSHOT.jar

这样做的正确方法是什么?

3 个答案:

答案 0 :(得分:3)

按照@udondan的建议创建服务,或使用异步任务启动服务器。 http://docs.ansible.com/ansible/playbooks_async.html

答案 1 :(得分:2)

正如@ Petro026建议的那样,您的选择是异步任务或创建服务。

我强烈建议不要使用异步任务方法。这是一个非常脆弱的解决方案:

  • 如果主机重新启动怎么办?
  • 如果你两次运行你的剧本怎么办?
  • 如果您的服务器应用程序刚刚死亡怎么办?

您最好的选择是为其创建服务,可能最简单的方法是使用像supervisord这样的流程控制系统,ansible支持该流程控制系统。

来自主管文档:

  

Supervisor是一个允许其用户监控的客户端/服务器系统   并在类UNIX操作系统上控制许多进程。

答案 2 :(得分:0)

将其放入PID并将输出发送到nohup。

这样的事情:

nohup java -jar target / server-1.0-SNAPSHOT.jar&

在你的剧本中:

  • name:启动服务器 命令:chdir =〜/ server nohup java -jar target / server-1.0-SNAPSHOT.jar&

如果你想杀死进程kill -9 #numerofpid。