Ansible зарегистрировать все переменные из списка - PullRequest
1 голос
/ 15 апреля 2020

У меня проблема с итерацией и регистрацией вывода в переменную. Мне нужно получить все xml пути к файлам в каталоге.

Сценарий:

---
- hosts: "{{ host }}"
  gather_facts: false
  tasks:
     - name: Find xml files
       win_find:
          paths: C:\Directory
          patterns: ['*.xml']
       register: filesfind
     - name: set facts
       set_fact:
          find: "{{ filesfind.files.0.path }}"

, который выводит:

ok: [host] => {
    "changed": false,
    "examined": 17,
    "files": [
        {
            "attributes": "Archive",
            "checksum": "dd1f259408cf08a40da492238101344824199594",
            "creationtime": 1586955271.1427224,
            "extension": ".xml",
            "filename": "File1.xml",
            "isarchive": true,
            "isdir": false,
            "ishidden": false,
            "islnk": false,
            "isreadonly": false,
            "isshared": false,
            "lastaccesstime": 1586955271.1427224,
            "lastwritetime": 1586867409.3292916,
            "owner": "BUILTIN\\Administrators",
            "path": "C:\\Directory\\File1.xml",
            "size": 218428
        },
        {
            "attributes": "Archive",
            "checksum": "dd1f259408cf08a40da492238101344824199594",
            "creationtime": 1586867369.8255088,
            "extension": ".xml",
            "filename": "File2.xml",
            "isarchive": true,
            "isdir": false,
            "ishidden": false,
            "islnk": false,
            "isreadonly": false,
            "isshared": false,
            "lastaccesstime": 1586867369.8255088,
            "lastwritetime": 1586867409.3292916,
            "owner": "BUILTIN\\Administrators",
            "path": "C:\\Directory\\File2.xml",
            "size": 218428
        }
    ],
    "matched": 2

Он регистрирует только файлы [0 ] .path, который я определил в playbook. Как я могу перебрать все индексы или элементы списка и получить все пути в одну переменную?

1 Ответ

0 голосов
/ 15 апреля 2020

Фильтр "карта" выполняет свою работу. Задание ниже

    - set_fact:
        myfind: "{{ filesfind.files|map(attribute='path')|list }}"
    - debug:
        var: myfind

дает

    "myfind": [
        "C:\\Directory\\File1.xml", 
        "C:\\Directory\\File2.xml"
    ]
...