ansible在src和dest之间的同一主机上同步

问题描述

我试图使用同步而不是移动,以便使用group和perms选项在目标目录上保留ACL和权限。 我正在尝试在同一远程服务器上存在的src和dest路径之间进行rsync(同步)。

我遇到了这个错误,不确定发生了什么。

致命:[foonode.bar.com]:失败! => {“已更改”:false,“ cmd”:“ sshpass -d12 / usr / bin / rsync --delay-updates -F --compress --archive'--rsh = / usr / bin / ssh -S无-o StrictHostKeyChecking =否-o UserKNownHostsFile = / dev / null''--out-format = %i%n%L'/foo/sbar_test/xyz/xyz'foonode.bar.com:rsync:'“' “'/ dest / testing / test_yzs / qwert'”'“”“,” msg“:” [Errno 32]管道损坏“,” rc“:32}

#this is the code snippet trying to rsync in the role
- name: "move '{{ root_path }}/{{ type }}/{{ name }}' root data from source to destination '{{destination_path}}'"
    # Synchronization using rsync protocol (push)
  synchronize:
      src: '{{ root_path }}/{{ type }}/{{ name }}'
      dest: rsync:'{{destination_path}}'

解决方法

synchronize是rsync的包装,可以使您的剧本中的常见任务变得快速简便。 它已运行并且起源于运行Ansible的本地主机。当然,您可以只使用命令操作自己调用rsync,但还必须添加大量样板选项和主机事实。 syncnize并非旨在提供对rsync的全部功能的访问权限,但可以使最常见的调用更易于实现。根据您的用例,您仍然可能需要直接通过命令或shell调用rsync。

您不能在远程主机上使用模块同步。 您可以使用module命令在远程主机上运行rsync命令。