Automation

如何在執行 Ansible 的 pip 模組時添加到 PATH?

  • October 12, 2016

我正在嘗試使用 Ansible 的pip模組將 psycopg2 安裝到 Python virtualenv 中,但我需要在 PATH 中添加一個條目才能正確建構(它需要知道包含pg_config. 我看到我可以傳遞environmentpip模組,但我不確定如何添加而不是覆蓋PATH

在這裡,我嘗試在路徑前添加必要的目錄,但它會覆蓋 virtualenvPATH並失敗:

- pip:
   name: psycopg2
   virtualenv: /path/to/my/venv
 environment:
   PATH: /usr/pgsql-9.3/bin:$PATH

如果您使用的是 Ansible 1.4 或更高版本(我推薦),您可以訪問遠端 PATH環境變數:

- 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') }}

引用自:https://serverfault.com/questions/577188