如何在具有组件名称的Ansible服务器列表上设置_事实
我有一份这样的清单如何在具有组件名称的Ansible服务器列表上设置_事实,ansible,jinja2,Ansible,Jinja2,我有一份这样的清单 fruit: hosts: serverA: {component_name: component_a} serverB: {component_name: component_a} ServerC: {component_name: component_a} meat: hosts: serverD: {component_n
fruit:
hosts:
serverA: {component_name: component_a}
serverB: {component_name: component_a}
ServerC: {component_name: component_a}
meat:
hosts:
serverD: {component_name: component_a}
serverE: {component_name: component_a}
ServerF: {component_name: component_a}
如何根据组件名称和设置事实的条件获取服务器作为列表?
预期结果
{
ServerD
ServerE
ServerF
}
例如,此库存
第1组:
主持人:
服务器a:{var:a}
服务器b:{var:b}
服务器C:{var:a}
第2组:
主持人:
serverD:{var:b}
服务器:{var:a}
服务器f:{var:b}
和剧本
-主机:所有
任务:
-设定事实:
列表a:“{{hostvars|
口述2项|
json_查询('[?value.var=='a`].key')}”
跑一次:对
-调试:
变量:列表a
跑一次:对
-设定事实:
列表a1:“{{list_a|
相交(groups.group_1)}”
跑一次:对
-调试:
var:list_a1
跑一次:对
给予
“列表a”:[
“服务器A”,
“服务器C”,
“服务器”
]
“列表a1”:[
“服务器A”,
“服务器C”
]
Q:“模板字符串时模板错误:没有名为'dict2items'的筛选器” 答:从2.6版开始提供。如果
dict2items
过滤器不可用,请使用以下任务
-设置事实:
my_hostvars:“{{my_hostvars}默认值([]))+
[{'key':项,'value':主机变量[item]}}”
循环:“{{ansible\u play\u hosts\u all}”
跑一次:对
-设定事实:
列表a:“{{my_hostvars|
json_查询('[?value.var=='a`].key')}”
跑一次:对
2.6版之后,我尝试了一个错误“模板字符串时模板错误:没有名为'dict2items'的筛选器”。升级到。