使用Ansible角色。我想循环一个文件路径列表,但是我收到一个错误:
template error while templating string: unexpected '/'.
String: {{/home/xyz/download.log}}
这是" list_log_files"的main.yml
。作用:
- name: "find logs"
find:
paths: /
patterns: 'download.log'
recurse: yes
register: find_logs
- name: "list log files"
debug: var="{{ item.path }}"
with_items: "{{ find_logs.files }}"
find返回一个数组" files&#34 ;,每个都是一个字典。字典包含一个路径条目,这是我感兴趣的。
答案 0 :(得分:3)
var
模块的debug
参数的正确语法(带有用例的值)是:
用Ansible表示法:
debug: var=item.path
以YAML表示法:
debug:
var: item.path
Ansible模块'用法很精彩,文章的例子涵盖了大多数用户。需要。对于debug
模块也是如此,因此refer to the examples检查基本语法。
答案 1 :(得分:1)
我遇到了同样的问题,并且我想在每个文件的路径列表中插入行的情况也相同。我使用Jinja2过滤器:
- name: fetch files
find: paths=/var/tmp/ patterns='*.log'
register: find_logs
- name: insert line
lineinfile: dest={{ item }} line='my line' insertafter=EOF
with_items: "{{ find_logs.files | map(attribute='path') | list }}"
{{find_logs.files | map(attribute ='path')|列表}}
Applies a filter on a sequence of objects or looks up an attribute.
This is useful when dealing with lists of objects but you are really
only interested in a certain value of it.