如何在Ansible中解析JSON并关联角色与对应业务影响
解析Ansible中的JSON响应:关联角色与业务影响
你可以通过两种方式实现需求,以下是具体方案:
方法一:使用Ansible原生过滤器链
通过subelements过滤器拆分每个条目下的角色列表,再结合combine将业务影响与角色信息合并:
- name: 解析带业务影响的角色信息 set_fact: role_name: "{{ api_response.json | json_query('[].{roles: serverdb_roles, impact: business_impact}') | subelements('roles') | map('combine', {'role': item.1.name, 'impact': item.0.impact}) | list }}" - name: 打印角色及对应影响 debug: var: role_name
方法二:使用json_query直接生成目标结构
利用JSONPath的父级引用^,直接从原JSON中提取并组合所需字段:
- name: 用json_query解析角色与业务影响 set_fact: role_name: "{{ api_response.json | json_query('[].serverdb_roles[].{role: name, impact: ^.business_impact}') }}" - name: 打印角色及对应影响 debug: var: role_name
两种方法执行后,都会生成你需要的格式:
[ { "impact": "low", "role": "apigwsearch" }, { "impact": "high", "role": "bplatformsearch" }, { "impact": "high", "role": "devbplatformsearch" } ]
内容的提问来源于stack exchange,提问作者Arpit Agarwal
相关产品推荐
相关产品推荐

