Ansible:
- name: Node package manager
npm:
name: pm2
global: yes
notify:
- restart nginx
- name: start the app
script: ../files/common/pm2.sh app_name {{ user }}
tags: test
脚本文件:
#!/bin/bash
APP_NAME=$1
USER=$2
if [ "$USER" != "" ]; then
PATH="/home/$USER/"
else
PATH="/var/www/"
fi
pm2 describe ${APP_NAME} > /dev/null # line no 11
RUNNING=$?
if [ "${RUNNING}" -ne 0 ]; then
cd ${PATH}${APP_NAME}/ && pm2 start npm --name "${APP_NAME}" -- start
else
pm2 restart ${APP_NAME}
fi;
当我尝试跑步时pm2
远程机器上的命令,它正在工作。但是,不从 ansible 脚本文件运行。
Error:
致命:[网络服务器]:失败! => {“changed”:true,“failed”:true,“msg”:“非零返回代码”,“rc”:1,“stderr”:“与 xx.xx.xx.xx 的共享连接已关闭。 \r\n", "stdout": "/home/ronak/.ansible/tmp/ansible-tmp-1510939424.06-225768915266978/pm2.sh: 第 11 行: pm2: 找不到命令\r\n127\r\n" ,“stdout_lines”:[“/home/ronak/.ansible/tmp/ansible-tmp-1510939424.06-225768915266978/pm2.sh:第11行:pm2:找不到命令”,“127”]}
你正在覆盖PATH
脚本中的环境变量。这用于确定可执行文件所在的位置(请参阅https://en.wikipedia.org/wiki/PATH_(变量) https://en.wikipedia.org/wiki/PATH_(variable)).
简短的答案是使用不同的名称PATH
在脚本中使用绝对路径作为脚本中的命令。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)