Пусть Ansible возвращает имя файла с помощью модуля win_find

#ansible

#ансибль

Вопрос:

Я использую модуль win_find с Ansible. Он возвращает список, но я хочу, чтобы возвращалось только имя файла, как мне этого добиться?

Я пробовал несколько вещей и подумал, что это сработает, если использовать имя файла.

 - name: Only filename
  debug:
     msg: "{{ file_name.files.filename }}" 
 

Но это не работает.

Это результат, когда я запускаю Ansible:

 ok: [test] => {
"file_name": {
    "changed": false,
    "examined": 1,
    "failed": false,
    "files": [
        {
            "attributes": "Archive",
            "checksum": "9c895e101dd6497f0b561460cb45b1f219a5f2ba",
            "creationtime": 1611923974.384624,
            "exists": true,
            "extension": ".msi",
            "filename": "test1.msi",
            "hlnk_targets": [],
            "isarchive": true,
            "isdir": false,
            "ishidden": false,
            "isjunction": false,
            "islnk": false,
            "isreadonly": false,
            "isreg": true,
            "isshared": false,
            "lastaccesstime": 1611923974.384624,
            "lastwritetime": 1611923973.355175,
            "lnk_source": null,
            "lnk_target": null,
            "nlink": 1,
            "owner": "BUILTIN\Administrators",
            "path": "C:\test\globalsync\test1.msi",
            "sharename": null,
            "size": 18192384
        }
    ],
    "matched": 1
}
 

Это мой план действий.

 ---
- hosts: all
  tasks:
    - name: get the msi name in checkMK folder
      ansible.windows.win_find:
        paths: C:testglobalsync
        patterns: "*.msi"
      register: file_name

    - name: return only the filename
      debug:
        msg: "{{ file_name.files.filename }}" 
 

Ответ №1:

Я не могу проверить это должным образом, но любой из них должен работать:

 - name: filename
  debug:
    msg: "{{ file_name.files[0].filename }}"
 

или

 - name: filename
  debug:
    msg: "{{ item.filename }}"
  loop: file_name.files