Gar*_*hop 2 ansible ansible-playbook
我正在尝试使用 ansible 同步在两个遥控器之间复制文件。
我的剧本看起来像:
- hosts: newserver
tasks:
- name: Copy images from old to new
synchronize:
src: /var/www/production/
dest: /var/www/production/
delegate_to: oldserver
Run Code Online (Sandbox Code Playgroud)
和newserver
是oldserver
在我的库存文件中定义的。如果我替换oldserver
为完整主机名,则 delegate_to 可以工作。否则它会抱怨无法访问。oldserver
在其他剧本的其他地方工作得很好。
delegate_to 不使用库存吗?
我得到的错误是:
TASK [Copy images from old to new] *************************************************
fatal: [thr.cs.unc.edu]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: ", "unreachable": true}
Run Code Online (Sandbox Code Playgroud)
newserver
可以从 到达oldserver
。正如我上面所说,如果我在 delegate_to 中更改oldserver
为它就可以了。gbserver3.cs.unc.edu
我的主机文件如下所示:
[newserver]
thr.cs.unc.edu
[oldserver]
gbserver3.cs.unc.edu
Run Code Online (Sandbox Code Playgroud)
delegate_to
需要一个清单主机名。
在您的清单中,oldserver
是一个可能包含多个主机名的组名称。
如果您确定您的组将始终包含单个主机,则一个快速而肮脏的修复方法是使用组内列表中的第一个主机。所以在这种情况下你可以delegate_to: "{{ groups['oldserver'][0] }}"
问题在于newserver
和oldserver
不是主机的名称,而是组的名称。不可能delegate_to一个组。请参阅清单基础知识:格式、主机和组
[newserver]
thr.cs.unc.edu
[oldserver]
gbserver3.cs.unc.edu
Run Code Online (Sandbox Code Playgroud)
修复库存。例如
newserver ansible_host=thr.cs.unc.edu
oldserver ansible_host=gbserver3.cs.unc.edu
Run Code Online (Sandbox Code Playgroud)