# Current pip unconditionally uses md5. # We can re-enable if pip switches to a different hash or allows us to not check md5. - name: Python 2 when: ansible_python.version.major == 2 block: - name: find virtualenv command command: "which virtualenv virtualenv-{{ ansible_python.version.major }}.{{ ansible_python.version.minor }}" register: command ignore_errors: true - name: is virtualenv available to python -m command: '{{ ansible_python_interpreter }} -m virtualenv' register: python_m when: not command.stdout_lines failed_when: python_m.rc != 2 - name: remember selected virtualenv command set_fact: virtualenv: "{{ command.stdout_lines[0] if command is successful else ansible_python_interpreter ~ ' -m virtualenv' }}" - name: Python 3+ when: ansible_python.version.major > 2 block: - name: remember selected virtualenv command set_fact: virtualenv: "{{ ansible_python_interpreter ~ ' -m venv' }}" - block: - name: install git, needed for repo installs package: name: git state: present when: ansible_distribution not in ["MacOSX", "Alpine"] register: git_install - name: ensure wheel is installed pip: name: wheel extra_args: "-c {{ remote_constraints }}" - include_tasks: pip.yml always: - name: platform specific cleanup include_tasks: "{{ cleanup_filename }}" with_first_found: - "{{ ansible_distribution | lower }}_cleanup.yml" - "default_cleanup.yml" loop_control: loop_var: cleanup_filename when: ansible_fips|bool != True module_defaults: pip: virtualenv_command: "{{ virtualenv }}"