user583088
user583088

Reputation: 1075

ansible throwing error when using pip command

When I am trying to run pip command through ansible I land up in error.

{"changed": false, "msg": "Unable to find any of pip to use. pip needs to be installed."}

When I debugged on my machine I found pip was installed in latest version. I realized my file uses sudo to run the pip.

So if I do which pip I get the path of pip but if I do sudo which pip I get nothing.

I don't know how to change my file so instead of sudo it take

- name: "Allow newuser for new super user without SUDO password for using rsync:"
  lineinfile:
    path: /etc/sudoers
    state: present
    insertafter: '^%sudo'
    line: "{{ user }} ALL=(ALL:ALL) NOPASSWD: /usr/bin/rsync"
- pip:
    name: opencv-python
    state: forcereinstall
    executable: pip

I have no idea how to fix this issue

Upvotes: 0

Views: 1626

Answers (1)

Vladimir Botka
Vladimir Botka

Reputation: 67959

At the remote host find out which pip is used by the remote user. Use the executable and become the remote user. For example,

    - name: Install opencv-python
      become_user: admin
      become: true
      pip:
        name: opencv-python
        state: forcereinstall
        executable: /home/admin/.local/bin/pip

See Becoming an Unprivileged User. Pipelining should solve the problems of becoming an unprivileged user.

shell> grep pipe ansible.cfg 
pipelining = true

Notes

  • Whatever you install by pip this way will be available to this particular remote user only.

  • Preferably distro packages should be used. For example

shell> apt-cache search python-opencv
python-opencv - Python bindings for the computer vision library
python-opencv-apps - opencv_apps Robot OS package - Python 2 bindings

Upvotes: 1

Related Questions