Как правильно обновить пипс используя ansible? - PullRequest
0 голосов
/ 14 января 2019

Цель и окружающая среда

Я использую ansible против Ubuntu 16.04 . Конечная цель - использовать модуль mongodb_user. Для этого требуется pymongo, поэтому требуется python-pip

Что я делаю

- name: Package prerequisites for pymongo ansible module
  apt:
    force_apt_get: yes
    name: ['python-pip', 'python-setuptools']
    install_recommends: no
    state: present
  become: true
  tags:
    - mongo
  register: output

- name: Upgrade pip to latest vesion
  pip:
    name: pip
    extra_args: --upgrade
  register: output

- debug:
    var: output    

Проблема

Это фактический вывод; пожалуйста, обратите внимание:

  • кажется pip игнорирует инструкции по обновлению
  • двоичный файл /usr/bin/pip2, в то время как я был
    "output": {
        "changed": true, 
        "cmd": [
            "/usr/bin/pip2", 
            "install", 
            "--upgrade", 
            "pip"
        ], 
        "failed": false, 
        "name": [
            "pip"
        ], 
        "requirements": null, 
        "state": "present", 
        "stderr": "You are using pip version 8.1.1, however version 18.1 is available.\nYou should consider upgrading via the 'pip install --upgrade pip' command.\n", 
        "stderr_lines": [
            "You are using pip version 8.1.1, however version 18.1 is available.", 
            "You should consider upgrading via the 'pip install --upgrade pip' command."
        ], 
        "stdout": "Collecting pip\n  Using cached https://files.pythonhosted.org/packages/c2/d7/90f34cb0d83a6c5631cf71dfe64cc1054598c843a92b400e55675cc2ac37/pip-18.1-py2.py3-none-any.whl\nInstalling collected packages: pip\nSuccessfully installed pip-8.1.1\n", 
        "stdout_lines": [
            "Collecting pip", 
            "  Using cached https://files.pythonhosted.org/packages/c2/d7/90f34cb0d83a6c5631cf71dfe64cc1054598c843a92b400e55675cc2ac37/pip-18.1-py2.py3-none-any.whl", 
            "Installing collected packages: pip", 
            "Successfully installed pip-8.1.1"
        ], 
        "version": null, 
        "virtualenv": null
    }

Странно то, что из командной строки я получил

$ /usr/bin/pip2 -V
pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)

$ /home/mirko/.local/bin/pip -V
pip 18.1 from /home/mirko/.local/lib/python2.7/site-packages/pip (python 2.7)

Попробуйте

Я попытался вручную обновить pip после установки python-pip и получил еще одну странную вещь: pip не хочет удалять старый pip ...

sudo pip install pip --upgrade
[sudo] password for mirko: 
The directory '/home/mirko/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
The directory '/home/mirko/.cache/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
Collecting pip
  Downloading https://files.pythonhosted.org/packages/c2/d7/90f34cb0d83a6c5631cf71dfe64cc1054598c843a92b400e55675cc2ac37/pip-18.1-py2.py3-none-any.whl (1.3MB)
    100% |████████████████████████████████| 1.3MB 1.2MB/s 
Installing collected packages: pip
  Found existing installation: pip 8.1.1
    Not uninstalling pip at /usr/lib/python2.7/dist-packages, outside environment /usr

Вопрос (ы)

Как правильно использовать pip с ansible против Ubuntu 16.04?

Должен / Могу ли я заставить ANSIBLE использовать "мой" пункт?

Должен ли я удалить "неправильный" пункт?

Я сделал что-то не так, чтобы создать эту проблему с двумя версиями?

1 Ответ

0 голосов
/ 14 января 2019

На самом деле я решил использовать специфичные для ubuntu пакеты pymongo

- name: Package prerequisites for pymongo ansible module
  apt:
    force_apt_get: yes
    name: ['python-pip', 'python-setuptools', 'python-virtualenv', 'python-pymongo']
    install_recommends: yes
    state: present
  become: true
  tags:
    - mongo
...