我正在尝试使用Ansible提供一个coreOS盒。首先使用https://github.com/defunctzombie/ansible-coreos-bootstrap引导该框
除了pip(位于/home/core/bin中)之外,这似乎起作用了。在下一步中,我尝试运行一个安装docker py的任务:
- name: Install docker-py
pip: name=docker-py
由于pip的文件夹不在路径中,我使用ansible进行了操作:
^{pr2}$如果我试图执行此任务,则会出现以下错误:
致命:[192.168.0.160]:失败!=>;{“changed”:false,“cmd”:“/home/core/bin/pip install docker py”,“failed”:true,“msg”:“\n:strderr:/home/core/bin/pip:line 2:basename:找不到命令\n/home/core/bin/pip:line 2:/root/pypy/bin/:没有这样的文件或目录\n”}
我要问的是/root/pypy/bin/
从何而来似乎这就是问题所在。有什么想法吗?在
问题出在/home/core/bin/pip脚本中,它的字面意思是:
当ansible在root下运行时,
$HOME
变量被/root替换,而不是用/home/core替换。 用/home/core
更改$HOME
,它应该可以工作。在设置Ansible变量时不能使用shell样式的变量扩展。在这个声明中。。。在
…您正在将
PATH
环境变量设置为literal值/home/core/bin:$PATH
。换言之,您正在清除$PATH
的任何现有值,这就是为什么对于basename
这样的基本内容,您会得到“command not found”错误。在考虑在现有的},或者从shell脚本调用{}:
^{pr2}$$PATH
中安装pip
,在调用ansible之前修改{相关问题 更多 >
编程相关推荐