ansible踩坑——环境变量问题
·
问题现象
使用ansible启动远程服务器的node服务,环境变量未被加载
本地测试打印环境变量为空

定位原因
1、环境变量问题
首先ansible使用的是ssh的方式下发命令,为no login shell的方式登陆
在ubuntu的配置文件~/.bashrc中有以下注释

第一行表明~/.bashrc这个文件会被no login shell加载
第二个位置表明如果不是交互式运行则直接退出了,因此环境变量要写在这个return之前
ansible命令格式
可以看到使用双引号""和单引号''的结果不同,单引号能取得值

查看PS1,单引号的双引号的结果也不相同

环境变量PATH
ubuntu安装了pm2之后,ansible无法远程使用,并且远程执行ansible $IP -m shell -a "$PATH"能取到node的路径
解决方案:将node的路径写到/etc/enviroment
遗留问题:
- 1、在ansible中为什么有的命令使用单引号和双引号都能获取值,而又的命令只能使用单引号
- 2、ubuntu和centos启动加载环境变量的不同
更多推荐



所有评论(0)