Ansible - 사전 내 목록의 모든 항목을 반복합니다.

Ansible - 사전 내 목록의 모든 항목을 반복합니다.

저는 이 모듈을 통해 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있습니다 .resultshttps://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'

이 경우 파일을 반복하여 경로를 추출하려면 어떻게 해야 합니까?

감사해요!

관련 정보