ansible 查找并更改权限

ansible 查找并更改权限

我很困惑为什么我的代码没有在字典中注册文件

我的剧本中的代码有问题,但我看不到是什么

  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可扩展。

相关内容