使用Ansible的交互式与非交互式shell环境

时间:2015-08-31 19:15:42

标签: bash ubuntu-12.04 ansible rbenv

我有一个安装rbenv的角色。似乎工作正常。但是,环境仅为交互式会话加载,因此我的其余部分无法访问已安装的rbenv。这是Ubuntu 12.04。 rbenv角色通过/etc/profile.d条目加载环境,基于我的阅读,也应加载非交互式shell。

非交互式

> ssh mymachine 'echo $PATH'                                                                                                                                       
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

互动

请注意,前两个条目引用rbenv

> ssh mymachine
mymachine$: echo $PATH
/usr/local/rbenv/shims:/usr/local/rbenv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

作为一种解决方法,我将可执行路径传递给gem模块,但这看起来不是最佳解决方案,因为其他模块可能依赖于由交互式shell加载和设置的ruby版本(rbenv) ):

gem: name=bundler state=present executable={{ gem_installed_path }} 

基本上,我的剧本中rbenv角色依赖正确的ruby版本(如gem角色)后的任何内容都会失败。解决这个问题的最佳方法是什么?

0 个答案:

没有答案