Regex 如何使用Ansible将文件从本地复制到远程?

Regex 如何使用Ansible将文件从本地复制到远程?,regex,ansible,Regex,Ansible,我需要将文件从本地服务器(ansible主机)复制到远程计算机。但是需要先用正则表达式过滤它。 我试着用和_items来做,但似乎它只在远程机器上执行命令。 我还尝试使用和_fileglob来实现它,但它似乎不理解正则表达式。 这怎么可能呢 我试着这样做: - name: Prepare list of packages to copy find: paths: "/srv/test_files/" patterns: '(^((?!.*db

我需要将文件从本地服务器(ansible主机)复制到远程计算机。但是需要先用正则表达式过滤它。 我试着用和_items来做,但似乎它只在远程机器上执行命令。 我还尝试使用和_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尝试从远程复制准备好的列表,而不是从本地计算机

在这种情况下,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运行
查找
。你太棒了。请将此作为答案张贴,我会将其标记为正确答案。谢谢!