我希望能够递归复制一个目录,并将其中所有的 .j2 文件作为模板进行渲染。目前,我正在使用以下几行代码:
- template: >
src=/src/conf.d/{{ item }}
dest=/dest/conf.d/{{ item|replace('.j2','') }}
with_lines: find /src/conf.d/ -type f -printf "%P\n"
现在我正在寻找一种方法,可以从这个目录中删除未管理的文件。例如,如果我从/src/conf.d/
中删除一个文件/模板,我希望Ansible也会从/dest/conf.d/
中删除它。
有没有什么办法可以做到这一点?我尝试了使用rsync --delete
进行修改,但是我遇到了一个问题,即模板的后缀.j2
被删除了。
when: item|regex_replace('^(.*)\\.ext$', '\\1') not in managed_files
- menghanmanaged_files
,请使用set_fact: managed_files="{{lookup('fileglob','conf.d / *').split(',')| map('basename') | list}}"
- simon04find
任务代替shell
,这样它就可以在--check
模式下工作。我会添加一个带有示例代码的答案。 - dreua