How to copy files to Windows remote hosts?

I’m going to show you a live Playbook with some simple Ansible code. I’m Luca Berton and welcome to today’s episode of Ansible Pilot

Ansible copy files to Windows remote hosts

Today we’re talking about Ansible module win_copy. The full name is ansible.windows.win_copy which means is part of the collection of modules “ansible.windows” targeted windows remote hosts. This module is pretty stable and out for years. The purpose is to copy files from the local machine to remote locations. Because win_copy runs over WinRM, it is not a very efficient transfer mechanism. If you plan to send large files consider hosting them on a web service and using ansible.windows.win_get_url instead. Please note that the opposite is done by module win_fetch. On Linux target use the module ansible.builtin.copy.

Please note that the opposite is done by module win_fetch. On Linux target use the Ansible copy module..

Parameters

  • dest path - remote path
  • src string - local path
  • backup boolean - no / yes
  • force string - yes / no

I’m going to summarize the most useful parameters. The only required parameter is “dest” which specifies the remote absolute path destination. It’s better with “", the Windows way, instead of “/”, the Unix way. Please also verify that the remote user has the right to write in this path. The “src” specifies the source file in the controller host. It could be a relative or absolute path. I recommend absolutely. If the source is a directory all the content is copied. Please be more careful with the “/” at the end. If present only the content of the directory is copied, if you want the directory and the content you need to omit the “/” character. The “backup” boolean parameter allows you to create a backup if the utility overwrites any file. The default behavior is to transfer the file only if not present or differ in the target host, the file is also verified by Ansible with a checksum on the source and target host automatically. If you want to transfer the all the time the file you need to toggle the “force” parameter to “no”. Please note that setting to “no” also disables the checksum that could speed up the process but also corrupt the file.

Join 50+ hours of courses in our exclusive community

Demo

Let’s jump in a real-life playbook to copy files to Windows remote hosts with Ansible.

  • copy.yml
---
- name: win_copy module Playbook
  hosts: all
  become: false
  gather_facts: false
  vars:
    source: "report.txt"
    destination: "Desktop/report.txt"
  tasks:
    - name: copy report.txt
      ansible.windows.win_copy:
        src: "{{ source }}"
        dest: "{{ destination }}"
  • report.txt
test report.txt

code with ❤️ in GitHub

Conclusion

Now you know how to copy files to remote Windows hosts with Ansible. Subscribe to the YouTube channel, Medium, and Website, X (formerly Twitter) to not miss the next episode of the Ansible Pilot.

Academy

Learn the Ansible automation technology with some real-life examples in my Udemy 300+ Lessons Video Course.

BUY the Complete Udemy 300+ Lessons Video Course

My book Ansible By Examples: 200+ Automation Examples For Linux and Windows System Administrator and DevOps

BUY the Complete PDF BOOK to easily Copy and Paste the 250+ Ansible code

Want to keep this project going? Please donate

Patreon Buy me a Pizza