ansible 遠(yuǎn)程過去 java -version
提示找不到命令
首先,在腳本中添加echo $JAVA_HOME ,which java ,echo $(whoami),然后用ansible遠(yuǎn)程執(zhí)行,發(fā)現(xiàn)為root用戶但輸出為空和找不到j(luò)ava; 其次,在~/.bash_profile中添加環(huán)境變量,用ansible遠(yuǎn)程執(zhí)行腳本,發(fā)現(xiàn)依然輸出為空和找不到j(luò)ava環(huán)境變量; 最后,考慮ansible執(zhí)行的環(huán)境變量與登錄時(shí)使用的環(huán)境變量不同,所以將JAVA_HOME寫在/etc/bashrc中,用ansible遠(yuǎn)程執(zhí)行腳本,發(fā)現(xiàn)執(zhí)行正常; 至此,確定ansible執(zhí)行過程中并未調(diào)用/etc/profile和~/.bash_profile
解決
ansible遠(yuǎn)程執(zhí)行的是non-login shell 并不會(huì)加載/etc/profile和~/.bash_profile下的環(huán)境變量,只加載~/.bashrc和/etc/bashrc 如果需要在ansible中執(zhí)行需要特定環(huán)境變量的命令,將環(huán)境變量寫在~/.bashrc ,然后source一下~/.bash_profile。