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

如何在Ansible的yum任务输出中过滤指定name与version的条目?

过滤YUM输出以保留指定条目

要从YUM任务的输出中提取name为kernel且version为3.10.0的条目,并仅保留这两个属性,可以通过Ansible的Jinja2过滤器实现,具体步骤如下:

1. 调整YUM任务(关键修正)

你的原YUM任务中设置了exclude: kernel*,这会排除所有kernel相关包,导致输出结果中不会出现kernel条目。如果需要获取kernel的信息,需移除该exclude参数:

- name: List Available Patches (Include Kernel)
  yum:
    list: updates
    update_cache: true
    security: true
  register: yumoutput

2. 添加过滤并输出的任务

使用selectattr筛选符合条件的条目,再用map提取目标字段,最后通过debug模块输出:

- name: 过滤并显示指定条目
  debug:
    msg: "{{ (yumoutput.results | selectattr('name', 'equalto', 'kernel') | selectattr('version', 'equalto', '3.10.0') | map('dict', name=item.name, version=item.version) | first) | to_yaml }}"

各过滤器说明:

  • selectattr('name', 'equalto', 'kernel'):从results列表中筛选name字段等于kernel的条目
  • selectattr('version', 'equalto', '3.10.0'):在上一步结果中,进一步筛选version等于3.10.0的条目
  • map('dict', name=item.name, version=item.version):对筛选后的条目,仅保留name和version两个属性
  • first:取筛选结果中的首个条目(符合条件的条目通常唯一)
  • to_yaml:将结果转换为YAML格式,与预期输出一致

预期输出

运行任务后会得到如下输出:

name: kernel
version: 3.10.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 18:55:27