我很困惑为什么我的代码没有在字典中注册文件
我的剧本中的代码有问题,但我看不到是什么
vars:
file_vars:
- { spath: /var/log/ctm, type: file, mode: o-w, pattern: "^.*?\\.(?:sh|fp|so|xml)$" }
tasks:
- name: Find files depending on REGEX pattern
find:
paths: "{{ item.spath }}"
file_type: "{{ item.type }}"
recurse: yes
patterns: "{{ item.pattern }}"
use_regex: yes
with_items:
- "{{ file_vars }}"
register: change_mode
- debug:
var: change_mode
- name: remove world writable permissions
file:
path: "{{ item.path }}"
mode: o-w
with_items:
- "{{ change_mode.files }}"
失败!=> {“msg”:“'dict object' 没有属性 'files'”}
非常感谢您的帮助
答案1
如果你阅读任务的输出,debug
你会注意到change_mode
是一个包含列表的字典results
,而不是files
。这是因为你的任务with_items
中有循环。Find files depending on REGEX pattern
迭代change_mode.results
带有子元素files
:
- name: remove world writable permissions
file:
path: "{{ item.1.path }}"
mode: o-w
loop: "{{ change_mode.results | subelements('files') }}"
使用您当前的数据,任务中的循环Find files depending on REGEX pattern
是不必要的,因此您可以将其删除,但我认为您希望file_vars
可扩展。