Hello, I am not understanding how this playbook was constructed (Ansible Advanc . . .

Gonçalo Sousa:
Hello,

I am not understanding how this playbook was constructed (Ansible Advanced Course - File content lab)

---
- hosts: web1
  tasks:
    - name: Find files
      find:
        paths: /opt/data
        age: 2m
        size: 1m
        recurse: yes
      register: file

    - name: Copy files
      command: "cp {{ item.path }} /opt"
      with_items: "{{ file.files }}"

We are using register to register the result as a variable I am not understanding how and why item.path and file.files is being called

Andrei Andriushin:
Hi Gonçalo,
I’m glad you’re joined community!

  1. Take a look at find module description: https://docs.ansible.com/ansible/latest/collections/ansible/builtin/find_module.html - it return lists with files metadata dictionaries, which is saved in file variable
  2. You can use debug module to print variable contents - https://docs.ansible.com/ansible/latest/collections/ansible/builtin/debug_module.html
  3. Another way is to use -v argument and show task output in console. (Use -vvv for human-readable json format)
  4. Next task uses with_items option which runs it in loop, based on items from file list
  5. path is one of file’s metadata, which is saved as a dictionary items inside list elements by previous task.

Andrei Andriushin: