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

Copy Files from one server to another using Ansible

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

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

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

您可以使用 fetch and copy 的组合来执行此操作。

假设库存结构如下:

[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复制到/tmp/ServerA/path/to/file下的Ansible控制主机,将ServerB上的/path/to/file复制到/tmp/ServerB/path/to/file[=25=下的Ansible控制主机]

然后我们需要确保每个 dest-servers 都定义了一个变量,说明它在单独的主机变量文件中的主机变量下与哪个服务器配对,或者in line in the inventory同上。

然后我们可以通过这个 copy 任务将正确的文件放在右边 dest-server:

- name: copy the paired files to the right servers
  hosts: dest-servers
  copy:
    src: "/tmp/{{ source-server }}/path/to/file"
    dest: /path/to/dest