如何在Ansible中为字典添加缺失的results键
为Ansible变量中缺失results键的条目补充默认值
可以通过Ansible的set_fact模块结合循环和字典合并操作,为testing列表中缺少results键的条目统一添加值为"not exist"的该键,实现结构统一。
示例Playbook代码
- name: 处理testing变量,补充缺失的results字段 hosts: localhost vars: testing: - failed: "yes" msg: "anothermessage" - results: - url: "ip:port" json: messages: - message: "yepp" severity: "ok" failed: "yes" msg: "ikan" - failed: "no" msg: "anothermessageyeay" tasks: - name: 生成处理后的testing变量 set_fact: testing_processed: "{{ testing_processed | default([]) + [item | combine({'results': 'not exist'}, recursive=False) if 'results' not in item else item] }}" loop: "{{ testing }}" - name: 查看处理结果 debug: var: testing_processed
代码说明
- 用
loop遍历原testing列表的每一个条目 - 通过
'results' not in item判断当前条目是否缺失results键 - 若缺失,使用
combine方法将{'results': 'not exist'}合并到当前条目(recursive=False确保不会递归修改已有结构);若已存在results键,则直接保留原条目 - 所有处理后的条目会被收集到
testing_processed变量中
处理后的输出结果
testing_processed: - results: "not exist" failed: "yes" msg: "anothermessage" - results: - url: "ip:port" json: messages: - message: "yepp" severity: "ok" failed: "yes" msg: "ikan" - results: "not exist" failed: "no" msg: "anothermessageyeay"
内容的提问来源于stack exchange,提问作者asking
相关产品推荐
相关产品推荐

