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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 18:22:43