【发布时间】:2020-10-05 13:48:51
【问题描述】:
我需要将文件从本地服务器(ansible 主机)复制到远程机器。但需要先用正则表达式过滤它。 我尝试使用 with_items 来执行此操作,但似乎它仅在远程计算机上执行命令。 我也尝试使用 with_fileglob 来做到这一点,但似乎它不理解正则表达式。 怎么可能做到这一点?
我试过这样:
- name: Prepare list of packages to copy
find:
paths: "/srv/test_files/"
patterns: '(^((?!.*dbg).)*arm64.*$)'
use_regex: yes
register: file_list
- name: Copying deb packaged to {{deb_path}} on a remote host
copy:
src: "{{item.path}}"
dest: "/srv/tmp/"
with_items:
- "{{file_list.files}}"
在这种情况下,ansible 会尝试从远程复制准备好的列表,而不是从本地机器。
【问题讨论】:
-
欢迎来到 SO。请更新问题并在
regex、with_*周围显示一些无效的代码。请参阅how to ask。 -
您是要在 Ansible 控制机器上还是在目标上查找文件列表?
-
需要在 Ansible 控制机器(挂载的 NAS)上找到列表并将该列表复制到远程。我用正则表达式过滤文件,因为没有找到其他合适的方法。
-
那么
find应该使用delegate_to: localhost在Ansible控制机器上运行。 -
天啊。你真棒。请将此作为答案发布,我会将其标记为正确答案。非常感谢!