2016-10-17 36 views
2

我正在尝试使用Ansible配置coreOS框。首先使用https://github.com/defunctzombie/ansible-coreos-bootstrap用Ansible配置CoreOS pip错误

这似乎工作广告除pip外(位于/ home/core/bin)未添加到路径。在接下来的步骤我试图运行安装搬运工-PY任务:

- name: Install docker-py 
    pip: name=docker-py 

由于PIP的文件夹是不是在路上,我做到了用ansible:

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

如果我试图执行此任务我收到以下错误:

致命:[192.168.0.160]:失败! => {“changed”:false,“cmd”:“/ home/core/bin/pip install docker -py”,“failed”:true,“msg”:“\ n:stderr:/ home/core/bin/pip:line 2:basename:command not found \ n/home/core/bin/pip:line 2:/ root/pypy/bin /:没有这样的文件或目录\ n“}

我问的是/root/pypy/bin/从哪里来,似乎是这个问题。任何想法?

+0

从查看错误信息看来,似乎'basename:command not found'是可能导致'/ root/pypy/bin /'之一的根本问题。 –

+0

一个有趣的事实,如果我ssh进入框中并运行'home/core/bin/pip install docker-py'命令执行没有任何问题。只有我从Ansible运行它才会发生故障。 – john84

回答

1

设置Ansible变量时,不能使用shell风格的变量扩展。在本声明

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

...你是你的PATH环境变量设置为文字/home/core/bin:$PATH。换句话说,你吹掉了任何现有的值$PATH,这就是为什么你会得到像basename这样的基本东西的“命令未找到”错误。

考虑安装pip某处现有$PATH,修改$PATH之前调用ansible,或调用从壳pip CRIPT:

- name: install something with pip 
    shell: | 
    PATH="/home/core/bin:$PATH" 
    pip install some_module 
+0

感谢您的回复,在ansible创建时使用shell脚本调用pip不幸的是发生了同样的错误。 – john84

+0

你确定你不再试图在Ansible中设置PATH吗?也许用你的新手册更新你的问题。 – larsks

+0

嘿,是相当舒尔,我阳明如下所示: ' - 主机:牧场主服务器 REMOTE_USER:coreos gather_facts:真 变成:是 become_method:sudo的 任务: - 名称:安装一些与PIP shell:| PATH = “/家/核心/斌:$ PATH” PIP安装some_module' – john84

0

问题出在/ home /核心/斌/ PIP脚本字面意思是:

#!/bin/bash 
LD_LIBRARY_PATH=$HOME/pypy/lib:$LD_LIBRARY_PATH $HOME/pypy/bin/$(basename $0) [email protected] 

当在根目录下运行时,由变量$HOME替换为/ root而不是/ home/core。 更改$HOME/home/core它应该工作。