如果在我的playbook中,正在多个主机上运行一个游戏,每个主机更新一个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:
默认情况下,委派任务收集的任何事实都将分配给
inventory_hostname
(当前主机),而不是实际生成事实的主机(委托给主机)。
您可以使用delegate_facts: true
更改行为。