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

Multiple hosts updating same localhost variable in Ansible

如果在我的 playbook 中,一个 play 在多个主机上 运行,每个主机更新一个 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']}}"

我应该期待此类代码的行为是什么?

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

localhost 是 Ansible 控制器。

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

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

groupa 的每个成员都有 deploy 个事实集。


请参阅文档中的 delegated facts

By default, any fact gathered by a delegated task are assigned to the inventory_hostname (the current host) instead of the host which actually produced the facts (the delegated to host).

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