--- # Runs before gather_facts using raw commands — no Python required - name: Check if python3 is installed ansible.builtin.raw: which python3 || echo "missing" register: python_check changed_when: false - name: Install python3 on Alpine (raw — no Python needed) ansible.builtin.raw: apk add --no-cache python3 when: "'missing' in python_check.stdout" changed_when: true - name: Install python3 on Debian/Ubuntu (raw — no Python needed) ansible.builtin.raw: apt-get install -y python3 when: - "'missing' in python_check.stdout" - ansible_os_family is not defined or ansible_os_family == 'Debian' changed_when: true