ansible如何搜索“ home / ansible”之类的目录/子目录

时间:2020-07-29 18:59:48

标签: regex linux design-patterns ansible find

在Ansible v2.8.2中,如何搜索目录树的子集,例如“ home / ansible”?

我尝试使用查找模块:

    - name: Find ansible directory
      become: true
      find:
          paths: /
          recurse: yes
          file_type: directory
          use_regex: yes
          patterns: 'home/ansible'
      register: ansible_dirs

    - name: post ansible dirs
      debug:
          msg:
              - "{{ ansible_dirs }}"

我收到错误消息:/proc/20828/task/20828/fd/6 was skipped as it does not seem to be a valid file or it cannot be accessed

如果我将模式更改为“家”或“可使用”,则可以,但是我需要的结果更多。

我想我可以采用更大的结果集并将其缩减为所需的值,但是我希望可以使用一种现成的方法。

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

认为find模块进行基本搜索。因此,它无法通过权限限制来访问所有内容,或者将永远占用非常大的已安装网络存储。

因此,限制搜索可能会有所帮助。

如果您只想测试特定路径是否存在(尚未测试目录是否像文件一样工作):

- name: Wait until the file /tmp/foo is present before continuing
  wait_for:
    path: /tmp/foo

或者您可以排除您不希望发现的路径:

排除您在查找模块中查找的选项。

- name: Find /var/log all directories, exclude nginx and mysql
  find:
    paths: /var/log
    recurse: no
    file_type: directory
    excludes: 'nginx,mysql'

代码提取来自Ansible文档示例。