ansible 远程过去 java -version
提示找不到命令
首先,在脚本中添加echo $JAVA_HOME ,which java ,echo $(whoami),然后用ansible远程执行,发现为root用户但输出为空和找不到java; 其次,在~/.bash_profile中添加环境变量,用ansible远程执行脚本,发现依然输出为空和找不到java环境变量; 最后,考虑ansible执行的环境变量与登录时使用的环境变量不同,所以将JAVA_HOME写在/etc/bashrc中,用ansible远程执行脚本,发现执行正常; 至此,确定ansible执行过程中并未调用/etc/profile和~/.bash_profile
解决
ansible远程执行的是non-login shell 并不会加载/etc/profile和~/.bash_profile下的环境变量,只加载~/.bashrc和/etc/bashrc 如果需要在ansible中执行需要特定环境变量的命令,将环境变量写在~/.bashrc ,然后source一下~/.bash_profile。
网友评论