Чтобы получить список всех пользователей из этой структуры данных, вы можете использовать фильтр json_query
, например:
data|json_query('[*].readers')|flatten
, который предполагает, что ваши данные находятся в переменной с именем data
. Мы можем продемонстрировать это в книге воспроизведения:
- hosts: localhost
gather_facts: false
vars:
data:
- name: queue1
readers:
- user1
- user5
- name: queue2
readers:
- user1
- user6
tasks:
- set_fact:
list_of_readers: "{{ data|json_query('[*].readers')|flatten }}"
- debug:
msg: "{{ list_of_readers }}"
Вышеприведенная книга воспроизведения выдаст:
PLAY [localhost] ******************************************************************************
TASK [set_fact] *******************************************************************************
ok: [localhost]
TASK [debug] **********************************************************************************
ok: [localhost] => {
"msg": [
"user1",
"user5",
"user1",
"user6"
]
}
PLAY RECAP ************************************************************************************
localhost : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Фильтр json_query
использует синтаксис JMESPath . На веб-сайте есть интерактивный инструмент запросов, который можно использовать для экспериментов с выражениями запросов.