将Loop值传递给Ansible调试消息时出现问题

时间:2019-03-26 21:41:08

标签: ansible

我试图在循环迭代的帮助下使用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循环与“调试:味精”一起使用。我尝试了大多数可能的方法,但问题仍然存在。这里有需要更正的地方吗?

2 个答案:

答案 0 :(得分:0)

整数转换不在正确的位置。应该是:

{{ files_match.files[ item | int ].path }}

答案 1 :(得分:0)

还找到了上述问题的替代解决方案,该解决方案实际上根本没有使用循环。试试下面的调试消息,不要循环,

msg:“与模式匹配的文件是{{files_match.files | map(attribute ='path')| list}}“”

但是要获得完美的解决方案,请使用先前的建议。