我正在尝试使用Ansible剧本从远程主机上的几个目录 中删除剩余文件。
/some_dir
├── dir_1
│ └── file_A
├── dir_2
│ └── file_B
└── dir_3
└── file_C
例如,如果我使用shell脚本,我将使用rm -rf /some_dir/dir_*/file_*
之类的简单glob,它足够具体。不过,我还是想坚持使用Ansible最佳实践™,所以我决定结合使用find
和file
模块。
tasks:
- name: Find files to remove by patterns
find:
paths: "/some_dir/dir_*/"
patterns: "file_*"
但是,通配符似乎在find
的{{1}}中不起作用,它们被视为文字。
有什么办法可以解决这些限制?
注意:
paths
中递归搜索file_[A-Z]
,但随后它可能会捕获some_dir
(如果其他所有方法都失败,我会采用该解决方案)/some_dir/very_important_stuff/file_0
任务:在find
中查找所有dir_*
,然后将它们用作some_dir
的列表来查找{{1 }},但是由于此任务是更大的真实游戏书的一部分,因此使用带有通配符的任意位置(paths
)的路径将过于复杂。答案 0 :(得分:0)
不能直接与ansible一起使用。您必须使用shell
命令:
---
- name: TEST
hosts: host1
gather_facts: False
tasks:
- name: shell
shell: "ls -1 /some_dir/dir_*/*"
register: result
- name: debug
debug:
var: result.stdout