--- - name: Ensure needed directories exist ansible.builtin.file: path: "{{ cv4pve_base_path }}" state: directory owner: "{{ cv4pve_user }}" group: "{{ cv4pve_user_group }}" mode: "0644" - name: Download specified version ansible.builtin.unarchive: src: "{{ cv4pve_dl_link }}" dest: "{{ cv4pve_base_path }}" mode: '0755' owner: "{{ cv4pve_user }}" group: "{{ cv4pve_user_group }}" remote_src: true creates: "{{ cv4pve_base_path }}/cv4pve-autosnap-{{ cv4pve_version }}" list_files: true register: download - name: Rename binary # noqa no-changed-when no-handler ansible.builtin.command: | mv "{{ cv4pve_base_path }}/cv4pve-autosnap" "{{ cv4pve_base_path }}/cv4pve-autosnap-{{ cv4pve_version }}" when: download.changed # https://stackoverflow.com/questions/20252057/using-ansible-how-would-i-delete-all-items-except-for-a-specified-set-in-a-dire - name: Find old versions ansible.builtin.find: paths: "{{ cv4pve_base_path }}" file_type: file use_regex: false excludes: - "cv4pve-autosnap-{{ cv4pve_version }}" register: found_files - name: Ensure old versions are absent ansible.builtin.file: path: "{{ item.path }}" state: absent with_items: "{{ found_files['files'] }}" ...