저는 이 모듈을 통해 Windows 시스템에서 파일을 찾기 위해 Ansible을 사용하고 있습니다 win_find
.
두 단계로 수행하고 싶습니다.
- 특정 위치에서 디렉터리를 찾습니다(예: 다음 위치에서 모든 디렉터리 찾기).
C:/
- 각 디렉토리에서 특정 파일 검색(예
blah.cfg
: : ) - 해당 파일이 디렉터리에 있으면 해당 구조가 원격 위치에 미러링됩니다
win_fetch
(
샘플 파일이 포함된 디렉토리를 찾고 가져오고 업로드했지만 어떤 이유로 디렉토리를 먼저 찾은 다음 반복하여 파일을 검색할 수 없습니다.
이것이 내가 하고 싶은 일이다:
- ansible.windows.win_find:
file_type: directory
paths: 'C:\'
recurse: no
get_checksum: no
register: win_dirs
tags: find
- debug:
msg: "Found directory {{ item.path }}"
with_items: "{{ win_dirs.files }}"
tags: find
- ansible.windows.win_find:
patterns: [ 'blah.cfg' ]
file_type: file
paths: '{{ item.path }}'
with_items: "{{ win_dirs.files }}"
tags: find
register: win_apps
- debug:
msg: "found blah directory: {{ item.path }}"
with_items: "{{ win_apps.files }}"
tags: find
변수에서 파일을 사용하려고 하면 win_apps
다음 오류가 발생합니다.
MSG:
'dict object' has no attribute 'files'
명확히 하기 위해 재귀를 사용하여 전체 루트 디렉터리를 검색하면 이 작업이 작동합니다.
- ansible.windows.win_find:
patterns: [ 'blah.cfg' ]
file_type: file
paths: 'C:\'
recurse: yes
tags: find
register: win_apps
- debug:
msg: "found blah directory: {{ item.path }}"
with_items: "{{ win_apps.files }}"
tags: find
win_find
그러나 이 방법을 사용하면 하위 디렉터리가 탐색되기 때문에 호스트 컴퓨터에서처럼 원격 위치의 디렉터리를 미러링할 수 없습니다 .
나는 이것에 문제가 있다고 생각합니다.
- ansible.windows.win_find:
patterns: [ 'blah.cfg' ]
file_type: file
paths: '{{ item.path }}'
with_items: "{{ win_dirs.files }}"
설명서를 읽고 다른 옵션을 시도하려고 최선을 다했지만 이를 알 수 없습니다.
어떤 도움이라도 대단히 감사하겠습니다.
감사해요!
고쳐 쓰다:
두 번째 loop()의 결과는 다음에 설명된 대로 사전 내부에 win_apps
있습니다 .results
https://docs.ansible.com/ansible/latest/user_guide/playbooks_loops.html#registering-variables-with-a-loop.
따라서 파일 경로가 거기에 있지만 목록이기 {{ win_apps.results.files.path }}
때문에 액세스할 수 없습니다 . win_apps.results.files
이것은 항상 작동합니다:
- debug:
msg: "Found file {{ item.files[1].path }}"
loop: "{{ win_files.results }}"
아직은 없지만:
- debug:
msg: "Found file {{ item.files.path }}"
loop: "{{ win_files.results }}"
반품The task includes an option with an undefined variable. The error was: 'list object' has no attribute 'path'
이 경우 파일을 반복하여 경로를 추출하려면 어떻게 해야 합니까?
감사해요!