--- - name: Handling for Python3.10+ externally managed environments block: - name: Get Python ansible.builtin.command: cmd: "{{ ansible_facts.python.executable }} -c 'import sysconfig; print(sysconfig.get_path(\"stdlib\", sysconfig.get_default_scheme()))'" changed_when: false register: python_default_scheme_path - name: Check if Python environment is externally managed ansible.builtin.stat: path: "{{ python_default_scheme_path.stdout }}/EXTERNALLY-MANAGED" register: python_externally_managed - name: Set podman_sdk_python_externally_managed fact set_fact: podman_sdk_python_externally_managed: true when: python_externally_managed.stat.exists when: ansible_facts.python.version.major == 3 and ansible_facts.python.version.minor >= 10 - name: Configure osbpo apt repository block: - name: Ensure apt sources list directory exists file: path: /etc/apt/sources.list.d state: directory recurse: true - name: Ensure apt keyrings directory exists file: path: /etc/apt/keyrings state: directory recurse: true - name: Install osbpo apt gpg key template: src: osbpo_pubkey.gpg.j2 dest: /etc/apt/keyrings/osbpo.asc mode: "0644" - name: Ensure old osbpo apt repository absent file: path: /etc/apt/sources.list.d/osbpo.list state: absent # TODO(mmalchuk): replace with ansible.builtin.deb822_repository module # when all stable releases moves to the ansible-core >= 2.15 - name: Enable osbpo apt repository copy: dest: /etc/apt/sources.list.d/docker.sources content: | # Ansible managed Types: deb URIs: {{ podman_sdk_osbpo_apt_url }} Suites: bookworm-bobcat-backports-nochange Components: main Signed-by: /etc/apt/keyrings/osbpo.asc mode: "0644" - name: Update the apt cache apt: update_cache: true when: - ansible_facts.distribution == 'Debian' - podman_sdk_python_externally_managed | default(false) - virtualenv is none become: true - name: Install packages package: name: "{{ podman_sdk_packages | select | list }}" cache_valid_time: "{{ apt_cache_valid_time if ansible_facts.os_family == 'Debian' else omit }}" update_cache: "{{ true if ansible_facts.os_family == 'Debian' else omit }}" state: present become: true - name: Install latest pip in the virtualenv pip: # NOTE(hrw) pip 19.3 is first version complaining about being run with Python 2 name: pip>19.3 virtualenv: "{{ virtualenv }}" virtualenv_site_packages: "{{ virtualenv_site_packages }}" virtualenv_command: "python{{ host_python_version }} -m venv" become: true become_user: "{{ podman_sdk_virtualenv_owner }}" when: virtualenv is not none - name: Install podman SDK for python pip: name: "{{ podman_sdk_pip_packages }}" executable: "{{ virtualenv is none | ternary('pip3', omit) }}" extra_args: "{% if podman_sdk_upper_constraints_file %}-c {{ podman_sdk_upper_constraints_file }}{% endif %}" virtualenv: "{{ virtualenv is none | ternary(omit, virtualenv) }}" virtualenv_site_packages: "{{ virtualenv is none | ternary(omit, virtualenv_site_packages) }}" virtualenv_command: "{{ virtualenv is none | ternary(omit, 'python' ~ host_python_version ~ ' -m venv') }}" become: true become_user: "{{ virtualenv is none | ternary(omit, podman_sdk_virtualenv_owner) }}" when: not (podman_sdk_python_externally_managed | default(false) and virtualenv is none)