使用 Ansible pip 错误配置 CoreOS
Provisioning CoreOS with Ansible pip error
我正在尝试使用 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 的路径中:
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/: No such file or directory\n"}
我问的是/root/pypy/bin/
是从哪里来的,看来这就是问题所在。有什么想法吗?
设置 Ansible 变量时不能使用 shell 式变量扩展。在此声明中...
environment:
PATH: /home/core/bin:$PATH
...您正在将 PATH
环境变量设置为 文字 值 /home/core/bin:$PATH
。换句话说,您正在吹走 $PATH
的任何现有值,这就是为什么您会在 basename
.
等基本内容上收到 "command not found" 错误的原因
考虑在现有 $PATH
中的某处安装 pip
,在 调用 ansible 之前修改 $PATH
,或从调用 pip
shells 脚本:
- name: install something with pip
shell: |
PATH="/home/core/bin:$PATH"
pip install some_module
问题出在/home/core/bin/pip脚本中,字面意思是:
#!/bin/bash
LD_LIBRARY_PATH=$HOME/pypy/lib:$LD_LIBRARY_PATH $HOME/pypy/bin/$(basename [=10=]) $@
当 运行 在 root 下通过 ansible 时,$HOME
变量被替换为 /root 而不是 /home/core。
将 $HOME
更改为 /home/core
,它应该可以工作。
我正在尝试使用 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 的路径中:
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/: No such file or directory\n"}
我问的是/root/pypy/bin/
是从哪里来的,看来这就是问题所在。有什么想法吗?
设置 Ansible 变量时不能使用 shell 式变量扩展。在此声明中...
environment:
PATH: /home/core/bin:$PATH
...您正在将 PATH
环境变量设置为 文字 值 /home/core/bin:$PATH
。换句话说,您正在吹走 $PATH
的任何现有值,这就是为什么您会在 basename
.
考虑在现有 $PATH
中的某处安装 pip
,在 调用 ansible 之前修改 $PATH
,或从调用 pip
shells 脚本:
- name: install something with pip
shell: |
PATH="/home/core/bin:$PATH"
pip install some_module
问题出在/home/core/bin/pip脚本中,字面意思是:
#!/bin/bash
LD_LIBRARY_PATH=$HOME/pypy/lib:$LD_LIBRARY_PATH $HOME/pypy/bin/$(basename [=10=]) $@
当 运行 在 root 下通过 ansible 时,$HOME
变量被替换为 /root 而不是 /home/core。
将 $HOME
更改为 /home/core
,它应该可以工作。