Ansible:根据主机名或angular色复制文件

根据主机名复制文件的最佳方法是什么?

我需要将具有不同内容但具有相同文件名的文件复制到多台机器上。

我有几个文件:

file.role1 file.role2 file.role3 

根据主机名和/或angular色,我想复制file.roleX并将其重命名为file

谢谢。

有很多方法可以做到这一点。 最简单的:

 - name: Copy file.role1 to host1 copy: src=file.role1 dest=/somewhere/file when: inventory_hostname == "host1" - name: Copy file.role2 to host2 copy: src=file.role2 dest=/somewhere/file when: inventory_hostname == "host2" 

另类,更紧凑:

 - name: Copy file to host copy: src=file.{{ inventory_hostname }} dest=/somewhere/file 

或者,使用模板:

 - name: Copy file to host template: src=file dest=/somewhere/file 

模板可以是这样的:

 {% if inventory_hostname == "host1" %} {% include "file1" %} {% endif %} ... 

如果你想要不同的文件在不同的angular色,你为什么不简单地把这个:

 - name: Copy file.role1 to file copy: src=file.role1 dest=/somewhere/file 

在每个angular色的代码?

没有最好的办法去做 – 这取决于你实际上想要完成什么。