从 ansible 中未指定角色的组中获取事实

从 ansible 中未指定角色的组中获取事实

我的 ansible playbook 已指定其所属的组。但指定的角色需要从主机所在的另一个组获取特定变量,因为 apache 设置取决于主机所在的位置组。

角色如何从未添加到剧本中的组中apache获取事实?var_location

存货:

all:
  hosts:
    location_a:
      vars:
        var_location: site_a
      hosts:
        foo.example.com:
    location_b:
      vars:
        var_location: site_b
      hosts:
        bar.example.com:
  webservers:
    hosts:
      foo.example.com:
      bar.example.com:

剧本:

- hosts: webservers
  become: true
  roles:
     - apache

如何才能获取这个变量?

答案1

首先,清单的格式错误:

all:
  hosts:
    foo.example.com:
    bar.example.com:
  children:
    location_a:
      vars:
        var_location: site_a
      hosts:
        foo.example.com:
    location_b:
      vars:
        var_location: site_b
      hosts:
        bar.example.com:
    webservers:
      hosts:
        foo.example.com:
        bar.example.com:

然后你可以看到,组 all 包含所有服务器(使用它来定义主机变量)。然后你在 all 下有三个子项(组:location_a、location_b 和 webservers)。foo 在 webservers 和 location_a 中,bar 在 webserver 和 location_b 中。

如果您现在启动一个具有所有 Web 服务器的角色,则主机仍然是 location_a 或 location_b 组的一部分,并且您仍然可以访问变量 var_location。

相关内容