我想使用Ansible将文件从一台服务器复制到另一台服务器。 以下是示例
Server A ------> Server B
Server C ------> Server D
我在服务器A上有一个文件,特别想将该文件复制到服务器B,服务器C到D也是如此。将文件保存到目的地的文件夹是相同的。我可以为2或3台主机做这件事。但是我怎么能动态创建让我们说100个节点来复制特定的单个文件只分配给所需的服务器。
答案 0 :(得分:5)
假设库存结构如下:
[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