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

如何用Jinja过滤语句列出Ansible中内存高于平均值的主机

单行Jinja实现方案

你可以直接使用以下语句,直接返回内存高于所有主机平均值的主机名列表:

{{ groups['all'] | select('extract', hostvars, 'ansible_memory_mb.real.total') | select('gt', (groups['all'] | map('extract', hostvars, ['ansible_memory_mb', 'real', 'total']) | list | avg)) | list }}

语句逻辑拆分

  • 嵌套在内层括号的部分负责计算所有主机的内存平均值:
    • 遍历groups['all']下的所有主机
    • 通过map过滤器配合extract提取每台主机的ansible_memory_mb.real.total属性值
    • 转为列表后调用avg过滤器计算出全局内存平均值
  • 外层逻辑负责筛选符合条件的主机:
    • 遍历所有主机提取对应内存属性
    • 调用select过滤器匹配内存值大于平均值的主机
    • 最后输出符合条件的主机名列表

如果你的Ansible版本低于2.10,不支持gt简写,替换为greaterthan即可正常使用。


内容的提问来源于stack exchange,提问作者Mikhail T.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 00:57:06