Automation
如何在執行 Ansible 的 pip 模組時添加到 PATH?
我正在嘗試使用 Ansible 的
pip
模組將 psycopg2 安裝到 Python virtualenv 中,但我需要在 PATH 中添加一個條目才能正確建構(它需要知道包含pg_config
. 我看到我可以傳遞environment
給pip
模組,但我不確定如何添加而不是覆蓋PATH
。在這裡,我嘗試在路徑前添加必要的目錄,但它會覆蓋 virtualenv
PATH
並失敗:- 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') }}