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

Ansible教程:如何从字典结构中提取所有ptag字段

提取Ansible输出中所有ptag字段的方法

你的Ansible任务输出里,msg下的stdout和stdout_lines结构完全一致,核心数据路径是:msg -> stdout[0] -> TABLE_ctx -> ROW_ctx,其中ROW_ctx是包含多个字典的列表,每个字典都带有ptag字段。你之前的写法错误在于误将stdout_lines[0]当成列表,实际上它是个字典,不能用[0]索引。

下面是两种可行的提取方法:

方法1:使用json_query过滤器(推荐)

json_query通过JMESPath表达式可以直接批量提取目标字段,写法简洁高效:

- name: 提取所有ptag到列表
  set_fact:
    all_ptags: "{{ OSPF_process_output.msg.stdout | json_query('[0].TABLE_ctx.ROW_ctx[*].ptag') }}"

执行后all_ptags会得到结果:["UNDERLAY", "TEST1", "TEST2"]。如果想用stdout_lines替换stdout,写法完全一致,因为两者结构相同。

方法2:循环遍历收集

如果不想用json_query,可以通过循环遍历ROW_ctx列表,逐个提取ptag并整合到列表中:

- name: 遍历提取ptag
  set_fact:
    all_ptags: "{{ all_ptags | default([]) + [item.ptag] }}"
  loop: "{{ OSPF_process_output.msg.stdout[0].TABLE_ctx.ROW_ctx }}"

执行后同样会得到包含所有ptag的列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 15:35:19