多个主机在Ansible中更新相同的localhost变量

时间:2018-08-18 18:16:28

标签: ansible ansible-facts

如果在我的剧本中,一部戏正在多台主机上运行,​​每台主机都更新一个localhost变量,那么该localhost变量的值是多少?

- hosts: groupa
  serial: 2
  tasks:
  - set_fact:
      deploy: A Random Integer (different for different server)
    when: prev_failure.stat.exists
    delegate_to: localhost
  - debug: msg="{{hostvars['localhost']['deploy']}}"

我应该期望这种代码的行为是什么?

它应该打印相同的值还是不同的?

1 个答案:

答案 0 :(得分:1)

localhost是Ansible控制器。

debug将从Ansible控制器打印deploy值(如果已执行),即localhostgroupa的成员。

如果localhost不是groupa的成员,则会引发异常。

groupa的每个成员都将设置deploy个事实。


请参阅文档中的delegated facts

  

默认情况下,委派任务收集的所有事实都分配给inventory_hostname(当前主机),而不是实际产生事实的主机(委派给主机)。

您可以使用delegate_facts: true更改行为。