auto-upgrade pip in Ansible role/task

Lets say you have an Ansible role in which you create a virtual-environment using Python 3.x:

- name: Install python venv and requirements
    extra_args: '--trusted-host'
    requirements: /path/to/requirements.txt
    virtualenv: /path/to/venv
    virtualenv_command: /opt/python-3.7.0/bin/python3.7 -m venv

If your requirements.txt only contains the modules you really need for your app, you end up with an old pip version (10.x). And then, when you do a pip freeze, you get this ugly message:

You are using pip version 10.0.1, however version 18.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

Not really nice, uuhh ? The fix is simple: add the required pip release to your requirements.txt, e.g.

# requirements.txt

Fixed !

And if you wonder why I made my pip module config so complex… it’s because Ansible insist to use pip2, which is not really appropriate for Python 3.x venv’s. This is the case with Ansible 2.6.2.