无法从 ansible 的清单文件中选择特定主机

ris*_*ark 1 ansible ansible-2.x ansible-inventory

我完成了一个直接使用同步命令在两台服务器之间传输文件的教程,我正在尝试将文件从源传输到目标,其中源将有 1 个服务器,目标将在清单文件中拥有多个服务器,如下所示:

[source]
server_1

[destination]
server_2
server_3
server_4
Run Code Online (Sandbox Code Playgroud)

并根据特定条件,我将选择“同步推送”来传输文件的服务器。但是我尝试了很多方法来提取服务器,但我什至无法选择主机:

-hosts: "{{ groups['destination'][0] }}"

-hosts: "{{destination.0}}"

-hosts: "{{destination[0]}}"
Run Code Online (Sandbox Code Playgroud)

这些都给我带来了以下错误:

有问题的行似乎是:

  • 主机:“{{目的地}}”
    ^此处

我们可能是错的,但这看起来可能是缺少引号的问题。当模板表达式括号开始值时,始终引用它们。例如:

with_items:
  - {{ foo }}
Run Code Online (Sandbox Code Playgroud)

应写为:

with_items:
  - "{{ foo }}"
Run Code Online (Sandbox Code Playgroud)

如何从 ansible playbook 的清单文件中选择目标服务器?

小智 6

我认为您正在尝试在剧本中使用库存组[目的地]。

主机:“{{目的地}}”^此处

这应该是不带括号的。

主机:目的地

如果你想在特定的比赛主机上运行

主机:目的地[2:3]

如果您想将任务运行到特定主机,您也可以使用委托。

delegate_to: {{ 主机名 }}