Из предыдущего вызова GET
api в ansible Я получаю результат json.
Вызов api будет выглядеть примерно так:
- name: Refresh Datadog monitors list
uri:
url: http://my.api.com
return_content: yes
method: GET
status_code: 200
headers:
Content-Type: "application/json"
register: results
Результат выглядит примерно так (фиктивные данные):
[{
"name": "bob",
"id": 13590804,
"colour": "blue",
"created": "2019-11-21T07:41:33.148976+00:00",
"modified": "2019-11-21T07:41:33.148976+00:00",
"overall_state_modified": "2019-11-25T06:45:08+00:00",
"overall_state": "OK"
},
{
"name": "john",
"id": 123124515,
"colour": "green",
"created": "2019-11-21T07:41:33.148976+00:00",
"modified": "2019-11-21T07:41:33.148976+00:00",
"overall_state_modified": "2019-11-25T06:45:08+00:00",
"overall_state": "OK"
},
{
"name": "carl",
"id": 3252532,
"colour": "orange",
"created": "2019-11-21T07:41:33.148976+00:00",
"modified": "2019-11-21T07:41:33.148976+00:00",
"overall_state_modified": "2019-11-25T06:45:08+00:00",
"overall_state": "OK"
},
{
"name": "louis",
"id": 5675467,
"colour": "purple",
"created": "2019-11-21T07:41:33.148976+00:00",
"modified": "2019-11-21T07:41:33.148976+00:00",
"overall_state_modified": "2019-11-25T06:45:08+00:00",
"overall_state": "OK"
}]
На следующем шаге я хочу извлечь только два значения из json, чтобы они выглядели примерно так:
[{
"name": "bob",
"id": 13590804
},
{
"name": "john",
"id": 123124515
},
{
"name": "carl",
"id": 3252532
},
{
"name": "louis",
"id": 5675467
}
]
Я пробовал несколько итераций из разных источников, чтобы попытаться получить такой результат, например:
- name: "Display all id's with names"
debug: msg = "{{ results | json_query '[id, names]')}}"
и
- name: "Display all id's with names"
debug: msg = "{{ results | json_query '[*][id, names]')}}"
Я понимаю, что есть пробел в я знаю jmespath, но документация немного сложна, и я не могу найти точное решение.