ansible启动/停止tomcat补充

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ansible启动/停止tomcat补充相关的知识,希望对你有一定的参考价值。

一、概述

大概yaml语句如下
- name: "关闭tomcat"
shell: "kill -9 `ps -ef|grep java|grep -v grep|grep tomcat|awk print $2`"
- name: "启动tomcat"
#直接使用 remotedir /bin/startup.sh启动不起来
shell: "nohup remotedir /bin/startup.sh &"

二、问题说明

1、关于不使用shutdown

刚开始使用的:
shell: " remotedir /bin/shutdown.sh &"
但是发现tomcat配置了一些东西,导致这个命令无法关闭,只能使用kill -9 杀进程号的方式

2、kill关闭报错

1、直接使用:
shell: "kill -9 `ps -ef|grep java|grep tomcat|awk print $2`" #未加grep -v grep
运行时会报错:"msg": "non-zero return code",

2、网上一种说法是添加:ignore_errors: true可以解决问题即:
- name: "关闭tomcat"
ignore_errors: yes
shell: "kill -9 `ps -ef|grep java|grep tomcat|awk print $2`"
这种办法虽然能杀掉tomcat进程,并且会继续运行下去,但是并没有实际发现报错出在哪里,解决报错

3、使用ansible命令发现端倪:
ansible 192.168.10.131 -m shell -a "ps -ef|grep java|grep tomcat" -i hosts
结果输出两个进程
<1、远程tomcat的进程
<2、/bin/bash -c ps -ef|grep java|grep tomcat #ansible远程连接的进程
如果直接kill -9除了杀死tomcat进程,也会把ansible的进程杀死,需要添加grep -v grep进行过滤

4、最终方案
- name: "关闭tomcat"
shell: "kill -9 `ps -ef|grep java|grep -v grep|grep tomcat|awk print $2`"

3、启动报错找不到java

启动tomcat报错:
Neither the JAVA_HOME nor the JRE_HOME environment variable is defined At least one of these environment variable
is needed to run this program
使用ansible单独测一下:
ansible 192.168.10.131 -m shell -a "java -version" -i hosts
"/bin/sh: java: command not foundnon-zero return code"
远程机器都是在/etc/profile里面配置的java环境变量,使用ansible不会读取这个文件,会读取/etc/bashrc和~/.bashrc
将java环境变量配置复制一份到~/.bashrc
重新运行即可跑通

以上是关于ansible启动/停止tomcat补充的主要内容,如果未能解决你的问题,请参考以下文章

cmd启动和停止tomcat

ceph 的安装和维护

ansible 启动tomcat遇到的问题

ansible 启动tomcat遇到的问题

使用Ansible进行项目的自动部署(TomcatWeblogic)

ansible部署tomcat8