--- - name: "Determine 'latest' version release" when: etebase__version == "latest" block: - name: "Get latest etebase release metadata" ansible.builtin.uri: url: "{{ etebase__repo_api }}" return_content: true register: etebase_remote_metadata when: not ansible_check_mode - name: "Fail if running in check mode without versions set." ansible.builtin.fail: msg: | "You are running this playbook in check mode: Please set the Etebase version with the variable 'etebase__version', because the URI module cannot detect the latest version in this mode." when: ansible_check_mode and (etebase__version == 'latest' or etebase__version == 'present') - name: Extract semantic version tags ansible.builtin.set_fact: semantic_version_tags: "{{ etebase_remote_metadata.json | selectattr('name', 'match', '^[0-9]+\\.[0-9]+\\.[0-9]+$') | list }}" - name: Sort semantic version tags ansible.builtin.set_fact: sorted_semantic_version_tags: "{{ semantic_version_tags | sort(attribute='name') }}" - name: Get the latest tag ansible.builtin.set_fact: etebase__latest_tag: "{{ sorted_semantic_version_tags | last }}" - name: "Set etebase version target (latest tag)" ansible.builtin.set_fact: etebase_version_target: "{{ etebase__latest_tag.name }}" when: not ansible_check_mode - name: "Set etebase version target {{ etebase__version }}" ansible.builtin.set_fact: etebase_version_target: "{{ etebase__version }}" when: etebase__version != "latest" - name: Print Etebase Version ansible.builtin.debug: verbosity: 1 msg: "etebase version is set to {{ etebase_version_target }}"