我的 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。