# vim: set filetype=yaml.ansible : --- - name: Ensure requirements met when: - archive.extract_to is defined - archive.name is defined - archive.url is defined block: - name: Dump archive vars ansible.builtin.debug: var: archive - name: Extract archive to given path block: - name: Ensure directory exists become: "{{ install_become }}" become_user: "{{ install_become_user }}" ansible.builtin.file: state: directory path: "{{ archive.extract_to }}" mode: "{{ archive.mode | default('0755') }}" owner: "{{ archive.owner | default(ansible_facts['user_id']) }}" group: "{{ archive.group | default(ansible_facts['user_gid']) }}" - name: Download archive to cache ansible.builtin.get_url: dest: "{{ d_cache.path }}/{{ archive.name }}" url: "{{ archive.url }}" checksum: "{{ archive.checksum | default(omit) }}" decompress: false mode: '0644' - name: Extract archive become: "{{ install_become }}" become_user: "{{ install_become_user }}" ansible.builtin.unarchive: dest: "{{ archive.extract_to }}" src: "{{ d_cache.path }}/{{ archive.name }}" remote_src: true include: "{{ archive.include | default(omit) }}" exclude: "{{ archive.exclude | default(omit) }}" - name: Symlink archive files become: "{{ install_become }}" become_user: "{{ install_become_user }}" when: - archive.links is defined - archive.links | length > 0 loop: "{{ archive.links }}" loop_control: loop_var: lnk ansible.builtin.file: state: link path: "{{ lnk.to }}" src: "{{ lnk.from }}" force: "{{ lnk.force | default(omit) }}"