我正在试图通过Ansible的pip模块将psycopg2安装到Python virtualenv中,但是我需要在PATH中添加一个条目来正确构build它(它需要知道包含pg_config的目录的path)。 我发现我可以将environment传递给pip模块,但我不确定如何预先configuration而不是覆盖PATH 。
在这里,我试图用必要的目录来加上path,但是它覆盖了virtualenv PATH并且失败了:
- pip: name: psycopg2 virtualenv: /path/to/my/venv environment: PATH: /usr/pgsql-9.3/bin:$PATH
如果您使用Ansible 1.4或更高版本(我推荐),您可以访问远程 PATH envvariables:
- pip: name=psycopg2 virtualenv=/path/to/my/venv environment: PATH: /usr/pgsql-9.3/bin:{{ ansible_env.PATH }}
相反,如果您对运行Ansible脚本的本地客户端 (而不是目标服务器 )的PATH env var感兴趣,则需要执行以下操作:
- 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') }}