使用Ansible将文件从一台服务器复制到另一台服务器

时间:2015-11-20 23:20:05

标签: ansible ansible-playbook

我想使用Ansible将文件从一台服务器复制到另一台服务器。 以下是示例

Server A ------> Server B
Server C ------> Server D

我在服务器A上有一个文件,特别想将该文件复制到服务器B,服务器C到D也是如此。将文件保存到目的地的文件夹是相同的。我可以为2或3台主机做这件事。但是我怎么能动态创建让我们说100个节点来复制特定的单个文件只分配给所需的服务器。

1 个答案:

答案 0 :(得分:5)

您可以使用fetchcopy的组合来执行此操作。

假设库存结构如下:

[source-servers]
ServerA
ServerC

[dest-servers]
ServerB source-server=ServerA
ServerD source-server=ServerB

然后运行以下fetch任务:

- name: fetch file from source servers
  hosts: source-servers
  fetch:
    src: /path/to/file
    dest: /tmp

将ServerA上的文件/path/to/file复制到ServerB上的/tmp/ServerA/path/to/file/path/to/file下的Ansible控制主机上/tmp/ServerB/path/to/file下的Ansible控制主机

从这里开始,我们需要确保每个dest-servers都有一个变量,它定义了在主机var下与主机var配对的服务器,或者在单独的主机变量文件中dest-server 3}}如上所述。

然后我们可以使用此copy任务将正确的文件放在右侧- name: copy the paired files to the right servers hosts: dest-servers copy: src: "/tmp/{{ source-server }}/path/to/file" dest: /path/to/dest

loop