Ansible non-zero return code 错误(ps -ef kill)

        你是否遇到了在用ansible shell执行远端脚本时报出了non-zero return code的错误?我的远端shell脚本中包含下面一行代码去杀进程:

ps -ef|grep patrolTask|grep -v "patrolTaskTimer\|grep"|awk '{print $2}'|xargs kill -9

        网上有很多什么加啥cat呀都没能解决我的问题,只有一篇文章说在grep中过滤deploy/monitor/start进程可以解决问题,这篇文档给我的启发是:我在kill -9杀目标进程时,执行了自杀,把ansible在远端机器的部署进程给杀了,然后管理端ansible进程无法接收到远端部署进程的正确回复,所以就报出了non-zero return code的错误。

        于是我就先把上面代码的 "|xargs kill -9" 先屏蔽的,还真打印出了ansible的部署进程,因为ansible中部署进程执行的脚本路径也包含了 "patrolTask" 关键字,还真执行了自杀!我的ansible执行shell命令是:

ansible patrolTask -m shell -a "source /etc/profile;/app/patrolTask/startup.sh"

解决办法,给ansible执行的命令加一个关键字 "ansibleDeployProcess":

ansible patrolTask -m shell -a "source /etc/profile;/app/patrolTask/startup.sh ansibleDeployProcess"

然后给远程shell脚本在kill时过滤掉这个关键字:

ps -ef|grep patrolTask|grep -v "patrolTaskTimer\|grep\|ansibleDeployProcess"|awk '{print $2}'|xargs kill -9

问题解决。

你可能感兴趣的:(ansible,linux,运维)