Playbook #3

/home/zuul/src/opendev.org/opendev/system-config/playbooks/service-bridge.yaml

Report Status CLI Date Duration Controller User Versions Hosts Plays Tasks Results Files Records
18 Jul 2025 20:45:39 +0000 00:01:42.73 bridge99.opendev.org root Ansible 2.15.13 ara 1.7.2 (client), 1.7.2 (server) Python 3.10.12 1 2 92 90 34 0

File: /home/zuul/src/opendev.org/opendev/system-config/playbooks/roles/create-venv/tasks/main.yaml

- name: Check directory is specified
  assert:
    that: create_venv_path is defined

- name: Ensure venv dir
  file:
    path: '{{ create_venv_path }}'
    state: directory

# Xenial's default pip will try to pull in packages that
# aren't compatible with 3.5.  Cap them
- name: Setup requirements for Xenial
  when: ansible_distribution_version is version('16.04', '==')
  set_fact:
    _venv_requirements:
      - pip<21
      - setuptools<51

# Bionic's default pip will try to pull in packages that
# aren't compatible with 3.6.  Cap them
- name: Setup requirements for Bionic
  when: ansible_distribution_version is version('18.04', '==')
  set_fact:
    _venv_requirements:
      - pip<22
      - setuptools<60

- name: Setup requirements for later era
  when: ansible_distribution_version is version('20.04', '>=')
  set_fact:
    _venv_requirements:
      - pip
      - setuptools

# This is used to timestamp the requirements-venv.txt file.  This
# means we will run --upgrade on the venv once a day, but otherwise
# leave it alone.
- name: Get current day
  shell: 'date +%Y-%m-%d'
  register: _date

- name: Write requirements
  template:
    src: requirements-venv.txt
    dest: '{{ create_venv_path }}/requirements-venv.txt'
  register: _venv_requirements_txt

- name: Create or upgrade venv
  when: _venv_requirements_txt.changed
  pip:
    requirements: '{{ create_venv_path }}/requirements-venv.txt'
    state: latest
    virtualenv: '{{ create_venv_path }}'
    virtualenv_command: '/usr/bin/python3 -m venv'