Ваш результат - список списков, и вам нужен первый элемент. Вы можете просто запросить первый элемент, например:
mac_group_list: >-
{{ inputjson | json_query('servers.server_details[].nic_macaddress."nic1-mac1_nic2-mac1"')[0] }}"
Или вы можете использовать flatten
фильтр:
mac_group_list: >-
{{ inputjson | json_query('servers.server_details[].nic_macaddress."nic1-mac1_nic2-mac1"') | flatten }}
Возможно, вы также можете исправить свой запрос, но это сложнее ответить, не видя, как выглядят исходные данные.
Обновление
Или вы можете написать свой фильтр запроса следующим образом:
- set_fact:
output: >-
{{
inputjson |
json_query('servers.server_details[].nic_macaddress[]."nic1-mac1_nic2-mac1"[]')
}}
Я переформатировал его для удобства чтения, но фактически это именно то, что у вас есть сейчас с дополнительным []
в конце. Учитывая ваши образцы данных - исправленные для соответствия предположениям, которые я описал в комментарии к вашему вопросу - это дает:
TASK [debug] *********************************************************************************************************************************************************************************
ok: [localhost] => {
"output": [
"b8:83:03:81:4b:20",
"b8:83:03:84:d5:1c"
]
}