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

Ansible中能否通过下标选择子组主机构建嵌套子组并获取预期主机?

能否对子组的子组使用下标选择主机?

不能直接在[test:children]中通过下标语法筛选子组内的主机。Ansible的组嵌套(:children)仅支持引用完整的现有组,无法直接对组执行主机切片操作——你写的group1[0:1]并不是一个已定义的组,因此test组没有实际关联的子组,执行命令后自然返回空结果。

要实现“匹配嵌套子组下每个组中的两台主机”的需求,有两种简洁的实现方式:

方法一:命令行直接指定复合主机模式

直接在命令行中使用切片语法同时筛选两个组的前两台主机:

ansible -i testinv.ini --list-host 'group1[:2],group2[:2]'

这里的[:2]表示取组内前2台主机(Ansible的切片为左闭右开区间,[0:2]和[:2]效果一致),执行后会输出你预期的结果:

hosts (4):
    hostname1
    hostname2
    hostname4
    hostname5

方法二:使用Constructed插件动态生成组

如果需要固定将这部分主机归为test组,可通过Ansible的constructed库存插件动态生成组:

  1. 创建一个额外的库存配置文件(比如inventory_constructed.cfg),内容如下:
[inventory]
enable_plugins = constructed, ini

[constructed]
groups =
  test = inventory_hostname in groups['group1'][:2] or inventory_hostname in groups['group2'][:2]
  1. 执行命令时同时加载原清单和这个配置文件:
ansible -i testinv.ini -i inventory_constructed.cfg --list-host test

这样test组会动态包含group1和group2的前两台主机,结果与预期一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 17:20:34