多个主机在 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
值,如果它被执行,即如果 localhost
是 groupa
的成员。
如果 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
更改行为。
如果在我的 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
值,如果它被执行,即如果 localhost
是 groupa
的成员。
如果 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
更改行为。