如何从Ansible注册的复杂嵌套变量中提取指定字段
提取NetApp ONTAP REST信息中的指定字段
首先你得先确认results变量的具体结构,先执行下面的任务打印完整变量,方便核对字段路径:
- name: 查看results变量的完整结构 debug: var: results
方法一:直接遍历+字典索引
如果你的results是包含4个元素的列表,每个元素里的目标字段路径明确,直接用loop遍历每个元素,通过字典索引提取字段:
- name: 提取并输出目标字段 debug: msg: "SVM: {{ item.ansible_facts.netapp_info.svm.name }} | 导出策略: {{ item.ansible_facts.netapp_info.export_policy.name }} | 客户端IP: {{ item.ansible_facts.netapp_info.client.ip }}" loop: "{{ results }}"
注意:如果实际字段路径不同(比如
export_policy在export_policies列表里),要调整索引,比如改成item.ansible_facts.netapp_info.export_policies[0].name,以你实际打印的结构为准。
方法二:用json_query批量结构化提取
如果想把所有提取的字段整理成一个结构化列表,方便后续使用,用json_query更高效:
- name: 批量提取字段为结构化列表 set_fact: extracted_data: "{{ results | json_query('[].{svm_name: ansible_facts.netapp_info.svm.name, policy_name: ansible_facts.netapp_info.export_policy.name, client_ip: ansible_facts.netapp_info.client.ip}') }}" - name: 打印结构化结果 debug: var: extracted_data
执行后extracted_data会是一个包含4个字典的列表,每个字典对应一组svm_name、policy_name、client_ip。
内容的提问来源于stack exchange,提问作者gang
相关产品推荐
相关产品推荐

