如何使用ansible运行Tomcat

时间:2016-10-28 17:13:40

标签: tomcat ansible ansible-playbook

我一直坚持这个问题一段时间了。在我的Ansible剧本中,当我尝试执行以下操作时:

- name: Start tomcat
  command: "/tomcat/bin/startup.sh"

在运行playbook时,我看到它成功运行任务,但是当我尝试检查目标机器时:

  ps -ef | grep tomcat

Tomcat没有运行。

我查了https://superuser.com/questions/870871/run-a-remote-script-application-in-detached-mode-in-ansible这样的问题但不确定它是如何工作的。我也从https://github.com/ansible/ansible-examples/blob/master/tomcat-standalone/roles/tomcat/files/tomcat-initscript.sh获取脚本并尝试将其作为

运行
- name: Start Tomcat
  script: /tmp/tomcat-initscript.sh

但没有帮助。任何指针将不胜感激。感谢。

4 个答案:

答案 0 :(得分:4)

tomcat-initscript.sh是一个SysV风格的init脚本;需要命令。所以你可以试试

- name: start tomcat
  script: /tmp/tomcat-initscript.sh start

理想情况下,您实际上会将其复制到您的系统(可能是/etc/init.d),因此您可以使用service模块与其进行互动。

许多Linux系统已切换到其他init系统,因此根据您的发行版,您可能希望编写一个upstart或systemd文件(这比SysV样式的脚本简单得多)。

您没有通过发行版的软件包管理器安装tomcat吗?该软件包几乎肯定已经包含了一个init脚本。

答案 1 :(得分:1)

对我来说,解决方案是使用

command: nohup /tomcat/bin/startup.sh

答案 2 :(得分:1)

我在几个Ubuntu VM上尝试了几个选项。使用startup.sh对我有效。

以下是我的剧本中的任务片段

 - name: Start Tomcat
   command: "nohup /Path_To_Catalina_Home/bin/startup.sh"
   tags: startTomcat

答案 3 :(得分:0)

使用nohup帮助我在这里制作了tomcat升级脚本,因为我们仍然使用shell脚本来控制tomcat,谢谢!我添加了忽略错误,因为我的脚本还运行了一些验证。

  - name: Run a script to restart tomcat
    shell:  nohup /shared/path/app.sh restart
    ignore_errors: yes