pip क्यों नहीं Ansible चल रहा है पीप sudo उपयोगकर्ता के रूप में?




ansible-playbook (2)

'सुडो जोड़ें: हाँ' को डीपी कार्य स्थापित करना

- name: make sure everything is installed
  apt: name={{item}} state=installed
  with_items:
    - python-apt
    - python-pycurl
    - python-pip
    - python-setuptools

- name: Install dopy
  pip: name={{ item }}
  with_items:
    - virtualenv
    - dopy
    - passlib
  sudo: yes

यदि आप नोटिस करते हैं कि कार्य निष्पादन करते समय प्लेबुक का निष्पादन लटका हुआ है तो यह संभावना है कि उत्तरदाता सुडो पासोवर के लिए इंतजार करता है लेकिन कोई भी तरीका नहीं है कि आप पासवर्ड दर्ज कर सकते हैं उसके चारों ओर जाने का एक तरीका है '/ Etc / sudoers' पर स्थित आपके sudoers फ़ाइल में निर्दिष्ट निर्दिष्ट अनुभाग को नीचे अपडेट करें

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL
yourusername  ALL=NOPASSWD: ALL

/ Etc / sudoers का संपादन करते समय सावधान रहें, गलत प्रविष्टियां होने से आपको सर्वर पर कभी भी प्रवेश करने से रोका जा सकता है

मेरे पास एक प्लेबुक है जो यह सुनिश्चित करता है कि सभी आवश्यकताओं को स्थानीय रूप से इंस्टॉल किया गया है। मैं ansible 2.0.0 का उपयोग कर रहा हूँ

ansible-playbook site.yml -i staging

site.yml:

---
  - hosts: localhost
    become: yes
    become_user: "{{ sudo_user }}"
    connection: local

    vars_files:
      - vars/main.yml

    roles:
      - do

sudo_user vars में sudo_user है।

कर / कार्य / main.yml:

- name: make sure everything is installed
  apt: name={{item}} state=installed
  with_items:
    - python-apt
    - python-pycurl
    - python-pip
    - python-setuptools

- name: Install dopy
  pip: name={{ item }}
  with_items:
    - virtualenv
    - dopy
    - passlib

मुझे निम्नलिखित त्रुटि मिलती है:

failed: [localhost] => (item=passlib) => {"cmd": "/usr/local/bin/pip install passlib", "failed": true, "invocation": {"module_args": {"name": "passlib"}, "module_name": "pip"}, "item": "passlib", "msg": "stdout: Collecting passlib\n  Using cached passlib-1.6.5-py2.py3-none-any.whl\nInstalling collected packages: passlib\n\n:stderr: Exception:\nTraceback (most recent call last):\n  File \"/usr/local/lib/python2.7/dist-packages/pip/basecommand.py\", line 211, in main\n    status = self.run(options, args)\n  File \"/usr/local/lib/python2.7/dist-packages/pip/commands/install.py\", line 311, in run\n    root=options.root_path,\n  File \"/usr/local/lib/python2.7/dist-packages/pip/req/req_set.py\", line 646, in install\n    **kwargs\n  File \"/usr/local/lib/python2.7/dist-packages/pip/req/req_install.py\", line 803, in install\n    self.move_wheel_files(self.source_dir, root=root)\n  File \"/usr/local/lib/python2.7/dist-packages/pip/req/req_install.py\", line 998, in move_wheel_files\n    isolated=self.isolated,\n  File \"/usr/local/lib/python2.7/dist-packages/pip/wheel.py\", line 339, in move_wheel_files\n    clobber(source, lib_dir, True)\n  File \"/usr/local/lib/python2.7/dist-packages/pip/wheel.py\", line 310, in clobber\n    ensure_dir(destdir)\n  File \"/usr/local/lib/python2.7/dist-packages/pip/utils/__init__.py\", line 71, in ensure_dir\n    os.makedirs(path)\n  File \"/usr/lib/python2.7/os.py\", line 157, in makedirs\n    mkdir(name, mode)\nOSError: [Errno 13] Permission denied: '/usr/local/lib/python2.7/dist-packages/passlib'\n"}

जो मूल रूप से permission denied तो यह sudo के साथ कमांड नहीं चल रहा है जैसा कि मैं sudo pip install passlib प्रयास करता sudo pip install passlib और यह काम करता है।

यहां तक ​​कि अगर मैं -k साथ चलाता हूं और sudo पासवर्ड दर्ज करता है तो यह काम नहीं करता। नोट लें कि surfer190 उपयोगकर्ता को एक पासवर्ड की आवश्यकता है जो surfer190 लिए है।

मैं क्या गलत कर रहा हूं?


तो ऐसा लगता है कि न्यूनतम विन्यास आपको चाहिए:

---
  - hosts: localhost
    become: yes
    become_user: "{{ sudo_user }}"
    connection: local

    vars_files:
      - vars/main.yml

    roles:
      - ...

तो become_user को एक उपयोगकर्ता होने की आवश्यकता है जो कि मुझे लगता है कि कोई पास के साथ sudo नहीं हो सकता। अगर कोई भी नहीं है become_user इसे विफल करता है:

failed: [localhost] => (item=passlib) => {"failed": true, "item": "passlib", "parsed": false}
[sudo via ansible, key=sgidbrejgqoibeozxncyhixnwsukxjbe] password: 




ansible-playbook