我正在尝试使用 Ansiblepip
模块将 psycopg2 安装到 Python 虚拟环境中,但我需要在 PATH 前面添加一个条目才能正确构建它(它需要知道包含 的目录的路径pg_config
)。我看到我可以传递environment
给pip
模块,但我不确定如何添加 而不是覆盖PATH
。
在这里,我尝试在路径前面添加必要的目录,但是它会覆盖虚拟环境PATH
并失败:
- pip:
name: psycopg2
virtualenv: /path/to/my/venv
environment:
PATH: /usr/pgsql-9.3/bin:$PATH
答案1
如果你使用的是 Ansible 1.4 或更高版本(我推荐),你可以访问偏僻的 PATH
环境变量:
- pip: name=psycopg2 virtualenv=/path/to/my/venv
environment:
PATH: /usr/pgsql-9.3/bin:{{ ansible_env.PATH }}
PATH
如果你对环境变量感兴趣本地客户运行 Ansible 脚本(而不是目标服务器),然后您需要执行以下操作:
- pip: name=psycopg2 virtualenv=/path/to/my/venv
environment:
# This only makes sense if your client and server are homogeneous, that is,
# they have the same PATHs.
PATH: /usr/pgsql-9.3/bin:{{ lookup('env', 'PATH') }}