🗒️ansible find的paths & patterns
2023-4-13
| 2023-4-15
0  |  0 分钟
type
status
date
slug
summary
tags
category
icon
password

1.find需求实现

ansible的find模块可以用于查找多个目录多个文件,怎么匹配多个目录多个文件?下面是一个sample,先find匹配的文件,再fetch到主控端。
重点是paths和patterns字段:
--- - hosts: 192.168.1.10 become: yes # 是否需要sudo become_method: sudo tasks: - name: find conf find: # paths是字符串list,多个path用逗号隔开,引号可以省略 paths: "/home/,/data/" # patterns可以是字符串list,多个pattern用逗号隔开,也可以是正则,引号不可以省略 # 我尝试过用正则语法写多个pattern,如"*.sh|*.py|*Dockerfile*",无效 patterns: "*.sh,*.py,*Dockerfile*" #recurse:递归。默认情况下只会在指定的目录中查找,也就是说如果指定目录中还有目录,ansible不递归查找;如果要递归查找,recurse设置为yes recurse: yes register: file_2_fetch - name: fetch conf fetch: src: "{{ item.path }}" dest: /home/confbak/ flat: no with_items: "{{ file_2_fetch.files }}"

2.find源码部分

if use_regex: if patterns and not excludes: for p in patterns: r = re.compile(p) if r.match(f): return True
如上述的 for p in patterns ,说明patterns是个list。
 
技术
  • devops
  • Python
  • ansible
  • centos7 pam密码策略通过chatgpt学习terraform
    目录