--- # # Expected variables # resources_source_host # resources_dir # resource_source_filename # resource_destination_directory # Output is upload_failed true/false # - name: "Upload resource {{ resources_dir }}/{{ resource_source_filename }} to infrastructure servers over ssh" block: - name: Upload ssh private key copy: src: "{{ ansible_ssh_private_key_file }}" dest: /root/.ssh/infra_to_resource.privkey mode: 0600 owner: root group: root - name: Detect if archive is compressed shell: > file "{{ resources_dir }}/{{ resource_source_filename }}" | grep "compressed" register: compressed failed_when: compressed.rc > 1 delegate_to: "{{ resources_source_host }}" - name: Set tar extract options set_fact: tar_extract_options: "{{ '-xzf' if compressed.rc == 0 else '-xf' }}" - name: "Unarchive resource {{ resources_dir }}/{{ resource_source_filename }} \ to {{ resource_destination_directory }} dir on infrastructure servers over ssh" shell: > ssh -o StrictHostKeyChecking=no -o BatchMode=yes -i /root/.ssh/infra_to_resource.privkey {{ resources_source_host }} 'cat "{{ resources_dir }}/{{ resource_source_filename }}"' | tar -C "{{ resource_destination_directory }}" "{{ tar_extract_options }}" - args: warn: false always: - name: Remove the ssh private key file: path: /root/.ssh/infra_to_resource.privkey state: absent