Назад | Перейти на главную страницу

доступный поиск и изменение разрешений

Я ломаю голову, почему мой код не регистрирует файлы в dict

что-то не так с моим кодом в playbook, но я не вижу, что

  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' не имеет атрибута 'files'"}

любая помощь очень ценится

Если вы прочитали вывод своей задачи 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 быть расширяемым.