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

问题描述 投票:0回答:1

如果在我的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']}}"

我应该期待这些代码的行为?

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

ansible ansible-facts
1个回答
1
投票

localhost是Ansible控制器。

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

如果localhost不是groupa的成员,则会引发例外。

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


请参阅文档中的delegated facts

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

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

© www.soinside.com 2019 - 2024. All rights reserved.