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

如何使用Ansible filter处理NIOS lookup返回的字典列表生成指定结构字典

实现方法

你可以通过两种方式完成转换,以下是可直接使用的代码示例:

方法1:使用过滤器链(无需循环,更简洁)

借助json_query预处理每个条目结构,再配合items2dict完成转换:

- set_fact:
    formatted_a_records: "{{ records | map('json_query', '{key: name, value: {a: ipv4addr}}') | items2dict }}"

逻辑说明:

  • map('json_query', ...) 会遍历原A记录列表,把每条记录重新构造成{key: 域名, value: {'a': 对应IP}}的结构,刚好匹配items2dict的输入要求
  • 最后用items2dict直接转换为目标结构的字典

方法2:使用循环迭代构建

如果不习惯用json_query,也可以用loop逐行合并生成目标字典:

- set_fact:
    formatted_a_records: "{{ formatted_a_records | default({}) | combine({item.name: {'a': item.ipv4addr}}) }}"
  loop: "{{ records }}"

可选优化(同域名多A记录场景)

如果存在同一个域名对应多个A记录的情况,你可以把a对应的值改为列表存储,避免后续合并被覆盖:

- set_fact:
    formatted_a_records: "{{ records | map('json_query', '{key: name, value: {a: [ipv4addr]}}') | items2dict }}"

后续合并其他类型记录(比如CNAME)时,直接对同域名的字典做递归合并即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 09:42:02