--- - name: Check if sqlcmd is already installed ansible.builtin.stat: path: /usr/local/bin/sqlcmd register: sqlcmd_bin - name: Download sqlcmd archive ansible.builtin.get_url: url: "{{ sqlcmd_url }}" dest: "/tmp/{{ sqlcmd_archive }}" when: not sqlcmd_bin.stat.exists - name: Create sqlcmd extraction directory ansible.builtin.file: path: /tmp/sqlcmd_extract state: directory mode: "0755" when: not sqlcmd_bin.stat.exists - name: Extract sqlcmd ansible.builtin.unarchive: src: "/tmp/{{ sqlcmd_archive }}" dest: /tmp/sqlcmd_extract remote_src: true creates: /tmp/sqlcmd_extract/sqlcmd when: not sqlcmd_bin.stat.exists - name: Move sqlcmd binary to /usr/local/bin ansible.builtin.copy: src: /tmp/sqlcmd_extract/sqlcmd dest: /usr/local/bin/sqlcmd mode: "0755" remote_src: true when: not sqlcmd_bin.stat.exists - name: Clean up sqlcmd temp files ansible.builtin.file: path: "{{ item }}" state: absent loop: - "/tmp/{{ sqlcmd_archive }}" - /tmp/sqlcmd_extract when: not sqlcmd_bin.stat.exists