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

如何在Ansible Playbook中按Inventory变量筛选目标主机?

Ansible 通过Inventory变量筛选主机的实现方法

当然可以实现通过Inventory内的变量筛选主机,甚至支持正则表达式匹配,以下是几种常用方案:

1. 直接使用主机模式变量筛选

这是最简单的方式,直接在hosts字段中通过变量条件过滤:

- name: test
  hosts: "*:env=pre"
  roles:
    - backend

*匹配所有主机,:env=pre表示筛选出env变量值为pre的主机。

2. 正则表达式匹配

如果需要更复杂的匹配规则(比如模糊匹配、模式匹配),可以使用~操作符结合正则表达式:
比如筛选env值以pre开头的主机:

- name: test
  hosts: "*:env ~ '^pre.*'"
  roles:
    - backend

这里~表示正则匹配,'^pre.*'是正则表达式,可根据需求调整匹配规则。

3. Jinja2过滤器实现复杂筛选

如果需要多条件组合或更灵活的逻辑,可借助Jinja2过滤器处理:

- name: test
  hosts: "{{ groups.all | selectattr('env', 'equalto', 'pre') | map(attribute='inventory_hostname') | list }}"
  roles:
    - backend

通过selectattr筛选出env等于pre的主机,再通过map提取主机名转为列表。

以上几种方式都能满足你的需求,可根据实际场景选择合适的方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 17:35:25