Ansible के पिप मॉड्यूल को चलाने के दौरान मैं PATH को कैसे रोक सकता हूं?


17

मैं साइन्सोपॉग 2 को पायस वर्चुअलाइज के साथ पायसिबल के pipमॉड्यूल में स्थापित करने का प्रयास कर रहा हूं , लेकिन मुझे इसके निर्माण के लिए पैठ में प्रवेश करने की आवश्यकता है ताकि इसे सही तरीके से बनाया जा सके (इसके लिए निर्देशिका युक्त पथ को जानना होगा pg_config)। मैं देखता हूं कि मैं मॉड्यूल environmentको पास कर सकता हूं pip, लेकिन मैं इस बारे में अनिश्चित हूं कि ओवरराइट करने के बजाय कैसे आगे बढ़ना है PATH

यहाँ मैं आवश्यक निर्देशिका के साथ मार्ग को आगे बढ़ाने का प्रयास कर रहा हूँ, लेकिन यह वर्चुअन PATHको विफल कर देता है और विफल हो जाता है:

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

जवाबों:


33

यदि आप Ansible 1.4 या बाद के संस्करण का उपयोग कर रहे हैं (जो मैं सुझाता हूं) आप दूरस्थ PATH env वैरिएबल का उपयोग कर सकते हैं :

- pip: name=psycopg2 virtualenv=/path/to/my/venv
  environment:
    PATH: /usr/pgsql-9.3/bin:{{ ansible_env.PATH }}

आप में रुचि रखते हैं के बजाय PATHका env var स्थानीय ग्राहक 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') }}

4
ansible_env.PATHपूरी तरह से काम किया है - विकल्प मैं क्या जरूरत थी। धन्यवाद!
कोलिन एलन

1
ध्यान दें कि यह कार्य केंद्र का सर्वर लेता है, सर्वर का नहीं!
vdboor

4
यदि आपको पूर्वसर्ग करने की आवश्यकता है ~/bin, तो उपयोग करें PATH: "{{ansible_env.HOME}}/bin:{{ansible_env.PATH}}"। यदि आप इसके बजाय उपयोग करते हैं PATH: "~/bin:{{ansible_env.PATH}}", तो कुछ प्रोग्राम (जैसे कि पायथन का shutil.which) उस घटक का उपयोग करने में असमर्थ हैं।
लेकेनस्टाइन

3
इस बात से भी अवगत रहें कि ansible_envSSH उपयोगकर्ता के पर्यावरण को संदर्भित करता है, पर्यावरण को नहीं sudoansible_env.USERइसलिए इसका परिणाम rootएक अप्रभावी उपयोगकर्ता के बजाय हो सकता है ।
लेकेनस्टेन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.