Regex 如何使用Ansible将文件从本地复制到远程?
我需要将文件从本地服务器(ansible主机)复制到远程计算机。但是需要先用正则表达式过滤它。 我试着用和_items来做,但似乎它只在远程机器上执行命令。 我还尝试使用和_fileglob来实现它,但它似乎不理解正则表达式。 这怎么可能呢 我试着这样做:Regex 如何使用Ansible将文件从本地复制到远程?,regex,ansible,Regex,Ansible,我需要将文件从本地服务器(ansible主机)复制到远程计算机。但是需要先用正则表达式过滤它。 我试着用和_items来做,但似乎它只在远程机器上执行命令。 我还尝试使用和_fileglob来实现它,但它似乎不理解正则表达式。 这怎么可能呢 我试着这样做: - name: Prepare list of packages to copy find: paths: "/srv/test_files/" patterns: '(^((?!.*db
- 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尝试从远程复制准备好的列表,而不是从本地计算机
在这种情况下,ansible尝试从远程复制准备好的列表,而不是从本地计算机
这是因为find
操作也在运行目标节点。由于文件位于Ansible控制计算机上,find
应在同一计算机上运行
您的查找任务中的一个小更改(如下面所示)应能解决此问题:
- name: Prepare list of packages to copy
find:
paths: "/srv/test_files/"
patterns: '(^((?!.*dbg).)*arm64.*$)'
use_regex: yes
register: file_list
delegate_to: localhost # search files on localhost instead of target
欢迎来到SO。请更新问题,并在regex
,中显示一些不起作用的代码。请参阅。您是在尝试查找Ansible控制计算机上的文件列表还是在目标计算机上的文件列表?需要查找Ansible控制计算机上的文件列表(已安装的NAS)并将该列表复制到远程。我使用regex进行文件过滤,因为没有找到其他合适的方法。然后应该在Ansible控制计算机上使用委托给:localhost
.OMG运行查找
。你太棒了。请将此作为答案张贴,我会将其标记为正确答案。谢谢!