我试图在循环迭代的帮助下使用ansible调试模块在路径中打印文件名。但是面对with_sequence循环的错误。
PFB剧本,
---
- name: Find Module Playbook
hosts: all
gather_facts: no
tasks:
- name: Find files in tmp path.
find:
paths: /tmp
patterns: "*.txt"
recurse: yes
register: files_match
- name: No of Files found.
debug:
msg: "Number of files matched is {{ files_match.matched }}"
# msg: [
# "Number of files matched is {{ files_match.matched }}",
# "Files matching the patterns are {{ files_match.files[ item ].path }}"
# ]
- name: Files Found.
# debug:
# msg: "Files matching the patterns are {{ files_match.files[ item ].path }}"
command: echo "{{ item }}"
# with_sequence: start=0 end={{ files_match.matched }}
# with_sequence: start=0 end={{ files_match.matched|int }}
with_items:
- 0
- 1
- 2
- 3
- 4
- 5
错误消息:
任务[找到文件。] ****************************************************** ****************************************************** ******************************致命:[13.250.101.163]:失败! => {“ msg”:“该任务包括一个 具有未定义变量的选项。错误是:“列表对象”没有 属性u'0'\ n \ n错误似乎出在 '/home/ansible_admin/Ansible_Playbooks/Find.yml':第24行,第11列 但可能\ n不在文件中的其他位置,具体取决于确切的语法 问题。\ n \ n出现问题的行似乎是:\ n \ n \ n-名称: 找到文件。\ n ^这里\ n“}重试,请使用:--limit @ / home / ansible_admin / Ansible_Playbooks / Find.retry
PLAY RECAP
13.250.101.163:ok = 2更改= 0不可达= 0失败= 1
实际上,剧本中使用的所有三个循环对于“命令:”都完全相同,其中只有with_items循环与“调试:味精”一起使用。我尝试了大多数可能的方法,但问题仍然存在。这里有需要更正的地方吗?
答案 0 :(得分:0)
整数转换不在正确的位置。应该是:
{{ files_match.files[ item | int ].path }}
答案 1 :(得分:0)
还找到了上述问题的替代解决方案,该解决方案实际上根本没有使用循环。试试下面的调试消息,不要循环,
msg:“与模式匹配的文件是{{files_match.files | map(attribute ='path')| list}}“”
但是要获得完美的解决方案,请使用先前的建议。