Ansible 在可承担的任务中,“委托”的含义是什么?
据我所知,每个ansible任务都是在某个主机的上下文中执行的。让我们称之为“远程主机” 对于某些ansible模块(例如,Ansible 在可承担的任务中,“委托”的含义是什么?,ansible,Ansible,据我所知,每个ansible任务都是在某个主机的上下文中执行的。让我们称之为“远程主机” 对于某些ansible模块(例如,fetch和copy),涉及两台主机:“远程主机”和运行ansible脚本的主机(我们称之为“本地主机”) 假设我们要在两个不同的远程主机之间复制一个文件。建议以下解决方案: - hosts: ServerB tasks: - name: Transfer file from ServerA to ServerB synchronize:
fetch
和copy
),涉及两台主机:“远程主机”和运行ansible脚本的主机(我们称之为“本地主机”)
假设我们要在两个不同的远程主机之间复制一个文件。建议以下解决方案:
- hosts: ServerB
tasks:
- name: Transfer file from ServerA to ServerB
synchronize:
src: /path/on/server_a
dest: /path/on/server_b
delegate_to: ServerA
在本例中,delegate_to
的效果似乎是任务仍在ServerB(远程主机)的上下文中运行,但使用了由delegate_to
指定的主机(在本例中为ServerA),而不是本地主机
但是,在以下情况下,行为是完全不同的:
- hosts: ServerB
tasks:
- name: Copy file from local host to Server A
copy:
src: /local/path
dest: /path/on/server_a
delegate_to: ServerA
即使在前一种情况下,hosts
和delegate\u to
的值相同,复制操作也会在本地主机和delegate\u to
指定的主机之间进行。因此在这种情况下,delegate\u to
修改的不是本地主机,而是远程主机
为什么在这些情况下,
委托给
的行为不同?它是特定于模块的吗?但是在synchronize
和copy
模块的ansible文档中没有提到这个参数,所以我希望所有模块的行为都应该相同。synchronize
在这种情况下有点特殊。了解它如何处理该选项。在最一般的情况下,delegate_to
只是指“使用当前播放主机的事实(除非您也使用了deletegate_事实
…),并在另一台主机而不是当前播放主机上播放该模块”。PS:您可能还想阅读以下内容: