You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于主机布尔变量将符合条件的主机纳入另一主机组?

Ansible 根据主机布尔变量筛选主机到目标组

方法1:使用Inventory内置变量筛选(Ansible 2.8+)

这是最简洁的实现方式,直接在目标组中通过条件匹配原组内的主机:

[group-1]
hostA a=true
hostB b=true
hostC a=true b=true c=true

[group-a]
# 筛选group-1中a变量为true的主机
@group-1[?a]

语法说明:@group-1表示引用原主机组,[?a]是筛选条件,直接匹配所有a变量为true的主机(布尔变量可直接用变量名判断真假)。

方法2:使用Jinja2模板实现复杂筛选

如果需要更灵活的逻辑(比如多条件组合),可以用Jinja2表达式遍历原组并筛选:

[group-1]
hostA a=true
hostB b=true
hostC a=true b=true c=true

[group-a]
{% for host in groups['group-1'] %}
{% if hostvars[host].a | default(false) %}
{{ host }}
{% endif %}
{% endfor %}

注意:需要在ansible.cfg中启用Jinja2 Inventory插件,添加配置:enable_plugins = ini, jinja2

验证筛选结果

执行以下命令查看目标组的主机列表,确认是否符合预期:

ansible group-a --list-hosts

内容的提问来源于stack exchange,提问作者javadev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 12:52:31