Deployment Ansible同步并行远程到远程

Deployment Ansible同步并行远程到远程,deployment,parallel-processing,ansible,rsync,devops,Deployment,Parallel Processing,Ansible,Rsync,Devops,我正在尝试使用Ansible synchronize将一组文件同时部署到多组服务器。现在我们有一个手工制作的顺序解决方案,它可以实现SCP,而且显然扩展性不好。由于Ansible使用SSH多路复用,所以我认为这可以达到我的目的。以下是我的设置的代表性说明: remotefileserver.x: remotetargetservers: ansible.cfg: 我最初的剧本设置如下: 主机:{{remotetargetservers} 任务: -名称:部署特定于站点的文件 使同步: src:

我正在尝试使用Ansible synchronize将一组文件同时部署到多组服务器。现在我们有一个手工制作的顺序解决方案,它可以实现SCP,而且显然扩展性不好。由于Ansible使用SSH多路复用,所以我认为这可以达到我的目的。以下是我的设置的代表性说明:

remotefileserver.x:

remotetargetservers:

ansible.cfg:

我最初的剧本设置如下:

主机:{{remotetargetservers}
任务:
-名称:部署特定于站点的文件
使同步:
src:{{src_path}}”
目的地:{{dest_dir}}/{{item}}”
校验和:是的
委托给:remotefileserver.x

有了“{files\u list}}”
通过强制rsync使用ssh,您应该能够克服这个问题。 rsync_选择:“-esh-p22”

主机:{{remotetargetservers}
任务:
-名称:部署特定于站点的文件
使同步:
模式:拉
src:“rsync://remotefileserver.x/{{src_path}}”
目的地:{{dest_dir}}/{{item}}”
校验和:是的
rsync_选择:“-esh-p22”
委托给:“{{inventory\u hostname}”

有了“{files\u list}}”
通过强制rsync使用ssh,您应该能够克服这个问题。 rsync_选择:“-esh-p22”

主机:{{remotetargetservers}
任务:
-名称:部署特定于站点的文件
使同步:
模式:拉
src:“rsync://remotefileserver.x/{{src_path}}”
目的地:{{dest_dir}}/{{item}}”
校验和:是的
rsync_选择:“-esh-p22”
委托给:“{{inventory\u hostname}”

使用_项:“{files_list}}”
确保在远程节点之间启用了基于SSH密钥的身份验证


必须在远程节点之间启用无密码登录。否则,同步任务将被卡住,Ansible也将被卡住。

确保在远程节点之间启用了基于SSH密钥的身份验证


必须在远程节点之间启用无密码登录。否则,同步任务会被卡住,Ansible也会被卡住。

您很清楚,如果有20个客户端试图从同一台服务器同步,每个客户端都会获得服务器带宽的1/20?总之,{{src_path}}是什么?@GUIDO{{{src_path}是本文开头提到的remotefileserver.x上的一个路径。它是remotefileserver.x上的一个文件,我希望将其rsync/copy复制到所有TargetServer。例如,在remotefileserver.x上,其路径可以是:
/storage/path/to/versions/component1/versionid-1/file1
。谢谢你调查这件事!您很清楚,如果有20个客户端试图从同一台服务器同步,每个客户端都会获得服务器带宽的1/20?总之,{{src_path}}是什么?@GUIDO{{{src_path}是本文开头提到的remotefileserver.x上的一个路径。它是remotefileserver.x上的一个文件,我希望将其rsync/copy复制到所有TargetServer。例如,在remotefileserver.x上,其路径可以是:
/storage/path/to/versions/component1/versionid-1/file1
。谢谢你调查这件事!
/storage/path/to/versions/component1/versionid-1/{file1,file2,file3,dir1/file1,dir2/file1,...}
/storage/path/to/versions/component1/versionid-2/{file1,file2,file3,dir1/file1,dir2/file1,...}
/storage/path/to/versions/component2/versionid-1/{file1,file2,file3,dir1/file1,...}
/storage/path/to/versions/component3/versionid-1/{file1,file2,file3,dir1/file1,...}
...
target1.x
target2.x
...
target10.x
pipelining = True
forks = 20