# checks complex ansible_python_interpreter values as well as jinja in the ansible_python_interpreter value --- - name: integration/interpreter_discovery/complex_args.yml hosts: test-targets gather_facts: true environment: http_proxy: "{{ lookup('env', 'http_proxy') | default(omit) }}" https_proxy: "{{ lookup('env', 'https_proxy') | default(omit) }}" no_proxy: "{{ lookup('env', 'no_proxy') | default(omit) }}" tasks: # Ansible releases after June 2024 quote ansible_python_interpreter # https://github.com/ansible/ansible/pull/83365 - meta: end_play when: - not is_mitogen - ansible_version.full is version('2.17.1', '>=', strict=True) - name: create temp file to source file: path: /tmp/fake state: touch # TODO: this works in Mac 10.15 because sh defaults to bash # but due to Mac SIP we can't write to /bin so we can't change # /bin/sh to point to /bin/bash # Mac 10.15 is failing python interpreter discovery tests from ansible 2.8.8 # because Mac doesn't make default python /usr/bin/python anymore # so for now, can't use `source` since it's a bash builtin # - name: set python using sourced file # set_fact: # special_python: source /tmp/fake && python - name: set python using sourced file set_fact: special_python: "source /tmp/fake || true && {{ ansible_facts.python.executable }}" - name: run get_url with specially-sourced python uri: # Plain http for wider Ansible & Python version compatibility url: http://www.gstatic.com/generate_204 status_code: [204] vars: ansible_python_interpreter: "{{ special_python }}" - name: run get_url with specially-sourced python including jinja uri: # Plain http for wider Ansible & Python version compatibility url: http://www.gstatic.com/generate_204 status_code: [204] vars: ansible_python_interpreter: > {% if "1" == "1" %} {{ special_python }} {% else %} python {% endif %} tags: - complex_args