一次saltstack环境变量的坑

现场环境:

salt-minion端:

ip:10.0.3.149     环境:使用 nvm装的nodejs    受用nodejs自带的npm 安装pm2

sal-master端:

IP:10.0.3.145   环境安装salt-master

问题描述:

在master端使用命令执行:

salt "10.0.3.149" cmd.run "pm2 list"    提示pm2命令未找到,但是在salt-minon端执行pm2是正常的,现场截图如下:

 

问题分析:

既然提示命令未找到,但是salt-minion是正常的那么说明这个安装没问题的。

是不是有可能是其服务的用户的原因?起的不是root用户?

检查:执行命令:salt "10.0.3.149" cmd.run "whoami"  ,显示就是root用户

既然用户是正确的,那就很有可能是环境变量的问题,检查环境变量:

salt-master.   执行 salt "10.0.3.149" cmd.run "echo $PATH"   输出一下

salt-minon端:执行echo $PATH

发现不同了吧,果然是环境变量的原因。那么,问题又来了,既然都是root用户为啥环境还能不一样呢?

上网查找,看到这么一篇文章,这哥们的情况和我的挺像,查考他的文章坐下设置:https://www.90hsa.com/223.html

分析:

在salt-minon的启动脚本中,根据上面的那篇文章,看到了这个调用

进入这个被调用的文件中,看到这个了这个:

再看上面的调用方法,就会发现,当用这个启动脚本的时候就是调用这个文件,调用的同时会继承这个文件中的环境变量,但是这个里面没有node和pm2的环境变量

所有就会出现pm2命令找不到的提示

 解决方法:

方法一:

.使用上面那篇文章里面的方法:

salt 10.0.3.149 cmd.run 'echo $PATH'  shell='/bin/bash' runas='root'

salt 10.0.3.149 cmd.run 'pm2 list'  shell='/bin/bash' runas='root'

 

 方法二:

在functions 添加环境变量到PATH中

重启客户端就可以了,若是出现使用node其服务的是时候报错/etc/pm2的话,在

/root/.bash_profile  中添加:export HOME=/root   

就好了

如果有其他好的方法请指教!!!!!!

 

posted @ 2018-02-11 11:20  你土哥!!!  阅读(1020)  评论(0编辑  收藏  举报