Ansible Pilot

Copy files from Windows remote hosts - Ansible module fetch

How to automate the copy and validate the checksum of example.txt file in the Desktop to a Linux Ansible Controller using Ansible Playbook and fetch module.

How to Copy files from Windows remote hosts with Ansible?

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

Ansible Copy files from Windows remote hosts

Today we’re talking about the Ansible module fetch. The full name is ansible.builtin.fetch which means is part of the collection of modules “builtin” with ansible and shipped with it. This module is pretty stable and out for years. The purpose is to copy files from remote locations. Please note that the opposite is done by Ansible copy module for Linux and Ansible win_copy module for Windows.

Parameters

The parameter list is pretty wide but I’ll summarize the most useful. The only required parameters are “dest” which specifies a directory to save the file into and the “src” specifies the source files in the remote hosts. It must be a file, not a directory. The “fail_on_missing” boolean is set to true so the task is going to fail if the file doesn’t exist. The file is going to be transferred and validated in the source and the destination with a checksum. If we don’t want this behavior we could override with the “validate_checksum” option. The “flat” option allows you to override the default behavior of appending hostname/path/to/file to the destination.

demo

Copy files from Windows remote hosts with Ansible Playbook.

code

---
- name: fetch module demo
  hosts: all
  become: false
  vars:
    myfile: 'C:\Users\vagrant\Desktop\example.txt'
    dump_dir: "logs"
  tasks:
    - name: fetch file
      ansible.builtin.fetch:
        src: "{{ myfile }}"
        dest: "{{ dump_dir }}"

execution

ansible-pilot $ ansible-playbook -i virtualmachines/win/inventory copy\ files\ from\ remote\ hosts/fetch-windows.yml
PLAY [fetch module demo] **************************************************************************
TASK [Gathering Facts] ****************************************************************************
ok: [WindowsServer]
TASK [fetch file] *********************************************************************************
changed: [WindowsServer]
PLAY RECAP ****************************************************************************************
WindowsServer              : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
ansible-pilot $

idempotency

ansible-pilot $ ansible-playbook -i virtualmachines/win/inventory copy\ files\ from\ remote\ hosts/fetch-windows.yml
PLAY [fetch module demo] **************************************************************************
TASK [Gathering Facts] ****************************************************************************
ok: [WindowsServer]
TASK [fetch file] *********************************************************************************
ok: [WindowsServer]
PLAY RECAP ****************************************************************************************
WindowsServer              : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
ansible-pilot $

before execution

fetch before execution

after execution

ansible-pilot $ ls -al copy\ files\ from\ remote\ hosts/logs 
total 0
drwxr-xr-x  3 lberton  staff   96 Jan 31 12:34 .
drwxr-xr-x  5 lberton  staff  160 Jan 31 12:34 ..
drwxr-xr-x  3 lberton  staff   96 Jan 31 12:34 WindowsServer
ansible-pilot $ ls -al copy\ files\ from\ remote\ hosts/logs/WindowsServer 
total 0
drwxr-xr-x  3 lberton  staff  96 Jan 31 12:34 .
drwxr-xr-x  3 lberton  staff  96 Jan 31 12:34 ..
drwxr-xr-x  3 lberton  staff  96 Jan 31 12:34 C:
ansible-pilot $ ls -al copy\ files\ from\ remote\ hosts/logs/WindowsServer/C:/Users/vagrant/Desktop
total 8
drwxr-xr-x  3 lberton  staff  96 Jan 31 12:34 .
drwxr-xr-x  3 lberton  staff  96 Jan 31 12:34 ..
-rw-r--r--  1 lberton  staff  15 Jan 31 12:34 example.txt
ansible-pilot $ cat copy\ files\ from\ remote\ hosts/logs/WindowsServer/C:/Users/vagrant/Desktop/example.txt
example content%
ansible-pilot $

code with ❤️ in GitHub

Recap

Now you know how to Copy files from Windows remote hosts with Ansible. Subscribe to the YouTube channel, Medium, Website and Twitter to not miss the next episode of the Ansible Pilot.

Academy

Learn the Ansible automation technology with some real-life examples in my

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

Want to keep this project going? Please donate

Trustpilot
Follow me

Subscribe not to miss any new releases

January 31, 2022

FREE Top 10 Best Practices

Top 10 Best Practices of Ansible Automation: save time, reduce errors and stress