使用Ansible pip配置CoreOS

2024-06-10 02:15:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用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/从何而来似乎这就是问题所在。有什么想法吗?在


Tags: pipdockernamepyhttpscoregithubhome
2条回答

问题出在/home/core/bin/pip脚本中,它的字面意思是:

#!/bin/bash
LD_LIBRARY_PATH=$HOME/pypy/lib:$LD_LIBRARY_PATH $HOME/pypy/bin/$(basename $0) $@

当ansible在root下运行时,$HOME变量被/root替换,而不是用/home/core替换。 用/home/core更改$HOME,它应该可以工作。在

设置Ansible变量时不能使用shell样式的变量扩展。在这个声明中。。。在

environment:
  PATH: /home/core/bin:$PATH

…您正在将PATH环境变量设置为literal/home/core/bin:$PATH。换言之,您正在清除$PATH的任何现有值,这就是为什么对于basename这样的基本内容,您会得到“command not found”错误。在

考虑在现有的$PATH中安装pip,在调用ansible之前修改{},或者从shell脚本调用{}:

^{pr2}$

相关问题 更多 >