【发布时间】:2017-09-21 19:51:59
【问题描述】:
我目前正在使用两台主机并将它们动态添加到一个组中,然后使用 with_together 执行 synchronize 任务,以并行使用 2 个元素的 3 个列表在两个远程服务器之间复制指定的文件。
这是一个基于这个想法的例子:
---
- name: Configure Hosts for Copying
hosts: localhost
gather_facts: no
tasks:
- name: Adding given hosts to new group...
add_host:
name: "{{ item }}"
groups: copy_group
with_items:
- ["remoteDest1", "remoteDest2"]
- name: Copy Files between servers
hosts: copy_group
gather_facts: no
tasks:
- name: Copying files...
synchronize:
src: "{{ item[1] }}"
dest: "{{ item[2] }}"
with_together:
- ["remoteSrc1", "remoteSrc2"]
- ["/tmp/remote/source/one/", "/tmp/remote/source/two/"]
- ["/tmp/remote/dest/one/", "/tmp/remote/dest/two/"]
delegate_to: "{{ item[0] }}"
目前,它对两台服务器都进行了这两项操作,总共进行了 4 次操作。
我需要它像这样同步:
- 在
remoteDest1上将/tmp/remote/source/one/从remoteSrc1复制到/tmp/remote/dest/one/ - 将
/tmp/remote/source/two/从remoteSrc2复制到/tmp/remote/dest/two/remoteDest2
这意味着它是 1:1 的比例;基本上以与with_together 对列表相同的方式作用于主机。
hosts是动态获取的,所以不能只为每个hosts做不同的玩法。
由于synchronize本质上是rsync的简化版本,那么如果有一个简单的解决方案直接使用rsync,那将不胜感激。
【问题讨论】: