希望能在以下方面得到一些帮助。我正在尝试引用work_dir位置中的xml文件:
---
- include_vars:
file: var_file.yml
- name: Locate audit results file
find:
paths: "{{ item }}"
recurse: no
patterns: '*.xml'
with_items: "{{ work_dir }}"
register: audit_file
- name: Copy audit results file to local destination
fetch:
src: "{{ item }}/{{ audit_file }}"
dest: /home/bob/audit_results/
flat: yes
validate_checksum: no
with_items: "{{ work_dir }}"var_file.yml:
---
work_dir:
- /var/tmp/audit然而,上面的代码总是出错:
"msg": "unable to calculate the checksum of the remote file"}
发布于 2020-05-20 06:25:36
您可以在一个路径循环中find文件并注册结果。因此,您注册的var audit_file包含一个results attribute which is a list。
results列表的每个元素都包含一个files attribute,它也是一个列表。每个files元素都包含一个查找运行的结果,其中包含有关找到的文件的所有信息。在这些信息中,有一个path属性指向远程服务器上文件的确切路径。
在继续之前,我强烈建议您阅读上面的文档并发出var的debug,以了解它的结构和内容。
- debug:
var: audit_file如果要获取每个找到的文件,则需要在每个results上创建一个循环,并在每个files元素上创建一个子循环。这可以使用subelements lookup来完成,尽管我们在这里只使用循环的子元素(即item.1)。
下面是修复第二个任务的方法:
- name: Copy audit results file to local destination
fetch:
src: "{{ item.1.path }}"
dest: /tmp/test/
flat: yes
validate_checksum: no
with_subelements:
- "{{ audit_file.results }}"
- files注意:这不是唯一的解决方案,我选择了最简单和最明显的解决方案。
https://stackoverflow.com/questions/61896192
复制相似问题