在运行 Ansible 的 pip 模块时如何将其添加到 PATH 前面?

在运行 Ansible 的 pip 模块时如何将其添加到 PATH 前面?

我正在尝试使用 Ansiblepip模块将 psycopg2 安装到 Python 虚拟环境中,但我需要在 PATH 前面添加一个条目才能正确构建它(它需要知道包含 的目录的路径pg_config)。我看到我可以传递environmentpip模块,但我不确定如何添加 而不是覆盖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') }}

相关内容