首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ansible unable to calculate the checksum error

Ansible unable to calculate the checksum error
EN

Stack Overflow用户
提问于 2020-05-20 00:34:27
回答 1查看 1K关注 0票数 1

希望能在以下方面得到一些帮助。我正在尝试引用work_dir位置中的xml文件:

代码语言:javascript
复制
---
- 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:

代码语言:javascript
复制
---
work_dir:
  - /var/tmp/audit

然而,上面的代码总是出错:

"msg": "unable to calculate the checksum of the remote file"}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-20 06:25:36

您可以在一个路径循环中find文件并注册结果。因此,您注册的var audit_file包含一个results attribute which is a list

results列表的每个元素都包含一个files attribute,它也是一个列表。每个files元素都包含一个查找运行的结果,其中包含有关找到的文件的所有信息。在这些信息中,有一个path属性指向远程服务器上文件的确切路径。

在继续之前,我强烈建议您阅读上面的文档并发出var的debug,以了解它的结构和内容。

代码语言:javascript
复制
- debug:
    var: audit_file

如果要获取每个找到的文件,则需要在每个results上创建一个循环,并在每个files元素上创建一个子循环。这可以使用subelements lookup来完成,尽管我们在这里只使用循环的子元素(即item.1)。

下面是修复第二个任务的方法:

代码语言:javascript
复制
- 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

注意:这不是唯一的解决方案,我选择了最简单和最明显的解决方案。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61896192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档