Как получить доступ к значению регистра команды find в цикле в Ansible

#ansible

#ansible

Вопрос:

Я хотел проверить разрешение на чтение другой группы для всех файлов в /tmp/ap//jets//conf/. Когда я выполняю отладку find_config, я могу видеть значения roth. Но, пожалуйста, дайте мне знать, как распечатать только эти значения.

  - name: List config   
    shell: ls -d /tmp/ap/*/jets/*/conf/
    register: config
  - name: Status
    find:
      paths: "{{item}}"
    loop: "{{config.stdout_lines}}"
    register: find_config
  - debug:
     msg: "{{item.files.roth}}"
    loop: "{{find_config.results}}"
 

Мне также нужно выполнить проверку, например, когда значение roth равно true, а затем выполнить СБОЙ печати.
Мне нужно что-то вроде приведенного ниже:

   - debug:
     msg: "FAIL"
    when: item.files.roth
    loop: "{{find_config.results}}"
 

Часть вывода отладки find_config:

    "files": [
        {
            "atime": 1608008199.489219, 
            "ctime": 1608008199.4442186, 
            "dev": 624768, 
            "gid": 103, 
            "gr_name": "prt", 
            "isgid": false, 
            "islnk": false, 
            "isreg": true, 
            "issock": false, 
            "isuid": false, 
            "mode": "0640", 
            "mtime": 16008199.4442186, 
            "nlink": 1, 
            "path": "/tmp/ap/new1/jets/f2/conf/conf.xml", 
            "pw_name": "wl", 
            "rgrp": true, 
            "roth": false, 
            "rusr": true, 
            "size": 21835,
 

Комментарии:

1. Простите за мой глупый вопрос, но на что roth ссылается и какие значения он содержит? Поможет пример дампа отладки (частичный, если слишком большой) вашей зарегистрированной переменной

2. @Zeitounator, я добавил отладочный вывод. roth — это разрешение на чтение других. rwxrwx — означает, что у других нет разрешений на чтение.

3. @Vladmir, я не знаю точного пути, который нужно ввести в find. Я просто знаю /tmp/ap/*/jets/*/conf/ . Я предполагаю, что пути к модулю find не поддерживают подстановочные знаки.

4. @Smily блестящая демонстрация, которую мы можем изучать каждый день, и что мы фильтруем информацию, которую мы видим в наших ежедневных отладках (я никогда не замечал, что возвращаемое значение, которое четко не задокументировано на странице модуля). Спасибо за это.

Ответ №1:

Я передал вывод из оболочки в пути в find, и теперь он работает.

  - name: List config   
    shell: ls -d /tmp/ap/*/jets/*/conf/
    register: config
  - name: Status
    find:
      paths: "{{config.stdout_lines}}"
    register: find_config
  - debug:
     msg: "{{item.roth}}"
    loop: "{{find_config.files}}"