Copy & fetch files in Ansible/Cygwin

Viewed 283

Question - - how do you navigate the cygwin path structure for file transfers, copies and fetches?

I've installed ansible on a windows 10 machine using cygwin. Everthing works except for the ansible.builtin.copy task. Here is the setup

Relevant Directory Structure
C:.
├───.github
│   └───workflows
├───files
    └───payload
        ├───communication
        ├───monitoring

The playbook sits in the documents directory of the user, so . is C:/Users/user/Documents/

Ansible Task
  - name: Download YAML payloads
    ansible.builtin.copy:
      src: payload
      dest: /some/directory/

The ansible cygwin command line actually runs from /cygdrive/c/Users... path. I can navigate to the payload directory from either windows cli or the cygwin cli using their native paths. [Must be a symlink?] In any event - when I run the above task, the src directory is not found.

What I've tried - both absolute and relative path variables in the src line, for both the cywgin and the windows paths. I've also tried using the inventory environment variables ({{ playbook_dir }}). fileglob: didn't work either.

What I haven't tried - {{ role_path }}. I'd like to keep the source YAMLs all together in the top directory. But not sure if this would work by putting the files directory under a role.

added details

Path to playbook from windows C:\Users\billr\Documents\GitHub\home-k3s

Path to playbook from cygwin /cygdrive/c/Users/billr/Documents/GitHub/home-k3

files & directories

home-k3s
  files                    // these are the files/dirs I'm looking to copy
    payload
      communication
        first.yaml
        second.yaml
      monitoring
        first.yaml
        second.yaml
  hosts.ini                //contains playbook hosts.
  test.yml                //this is the playbook I'm running

playbook cat

---
- hosts: master
  gather_facts: yes
  become: yes
  tasks:
  - name: Download YAML payloads
    ansible.builtin.copy:
      src: payload
      dest: /home/bill/

Run #1 src: payload <-- this is the method per docs (for linux).

result: FAILED! => {"changed": false, "msg": "Source payload not found"}

Run #2 src: "{{ playbook_dir }}/files/payload"

result: FAILED! => {"changed": false, "msg": "Source /cygdrive/c/Users/billr/Documents/GitHub/home-k3s/files/payload not found"}

Run #3 src: "/cygdrive/c/Users/billr/Documents/GitHub/home-k3s/files/payload"

result: FAILED! => {"changed": false, "msg": "Source /cygdrive/c/Users/billr/Documents/GitHub/home-k3s/files/payload not found"}

Run #4 src: "c:/Users/billr/Documents/GitHub/home-k3s/files/payload"

FAILED! => {"changed": false, "msg": "Source c:/Users/billr/Documents/GitHub/home-k3s/files/payload not found"}

Note that I can see the files from the cygwin terminal with ls and I can see the files from the windows cli with dir.

Final Notes

Cygwin Github Issue Link

0 Answers
Related