我正在尝试使用Ansible的pip模块将psycopg2安装到 Python virtualenv中,但是我需要在PATH前面添加一个条目才能正确构建(它需要知道包含pg_config的目录的路径).我看到我可以将环境传递给pip模块
在这里,我试图在必要的目录前面添加路径,但它会覆盖virtualenv PATH并失败:
- pip: name: psycopg2 virtualenv: /path/to/my/venv environment: PATH: /usr/pgsql-9.3/bin:$PATH如果您使用Ansible 1.4或更高版本(我推荐),您可以访问远程PATH env变量:
- 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') }}