ansible - ansible json_query 如何为缺少的键定义默认值
问题描述
我有一些变量:
vars:
foo:
- {name: "bar", path: "/tmp"}
- {name: "zob" }
default: "/home"
我想制作提取名称和路径的 json_query,并且在未定义路径时采用默认值。
我想要的结果是
- {name: "bar", path: "/tmp"}
- {name: "zob", path: "/home"}
当未定义键时,json_query 是否有可能定义默认值?
谢谢,拉乌尔
解决方案
merge
如果使用jmespath 函数重新定义,以下将合并列表中的每个元素与覆盖现有值的默认哈希映射。这适用path
于示例中的 ,但如果需要,您可以添加更多映射。
---
- hosts: localhost
gather_facts: false
vars:
foo:
- {name: "bar", path: "/tmp"}
- {name: "zob" }
foo_defaults:
path: "/home"
tasks:
- debug:
msg: "{{ foo | json_query(query) }}"
vars:
query: >-
[].merge(`{{ foo_defaults | to_json }}`, @)
这使
PLAY [localhost] ***********************************************************************************************************************************************************************************************************************
TASK [debug] ***************************************************************************************************************************************************************************************************************************
ok: [localhost] => {
"msg": [
{
"name": "bar",
"path": "/tmp"
},
{
"name": "zob",
"path": "/home"
}
]
}
PLAY RECAP *****************************************************************************************************************************************************************************************************************************
localhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
推荐阅读
- python - TKinter:如何为非 python 用户自动更新应用程序到下一个版本?
- reactjs - 在带有数组的单个函数中多次调用`useVal` - 意外行为
- python - 如何最好地解析大量时间戳事件以识别并发条目?
- autodesk-forge - 保护 Autodesk 查看器 js 库中的知识产权?
- scala - 桑格利亚汽酒:如何处理自定义类型
- java - 处理 JPA/Hibernate 实体与 Jackson `JsonIgnoreProperties` 的循环引用/依赖关系的错误
- r - R中计算三次根的奇怪问题
- sum - 如何计算访问子表单中相同数据的总和
- java - 我正在编写一个 Java 程序,该程序旨在根据用户的输入与用户一起播放 20 个问题的版本
- amazon-redshift - 从redshift表中查询数据,数据类型为timestamp的列