Q: "... получение количества устройств ... как я могу получить только часть значения, т. Е. 10, 8, 4?"
A: Учитывая приведенный ниже словарь для проверки количества устройств в каждом блейде (3, 4, 5)
blades:
1: [devA, devB, devC]
2: [devA, devB, devC, devD]
3: [devA, devB, devC, devD, devE]
, задачи
- set_fact:
devices: "{{ blades|dict2items|
json_query('[].value')|
map('length')|
list }}"
- debug:
var: devices
дают
"devices": [
3,
4,
5
]
Подробности
dict2items преобразует словарь в список
[
{
"key": 1,
"value": [
"devA",
"devB",
"devC"
]
},
{
"key": 2,
"value": [
"devA",
"devB",
"devC",
"devD"
]
},
{
"key": 3,
"value": [
"devA",
"devB",
"devC",
"devD",
"devE"
]
}
]
json_query выбирает список значений
[
[
"devA",
"devB",
"devC"
],
[
"devA",
"devB",
"devC",
"devD"
],
[
"devA",
"devB",
"devC",
"devD",
"devE"
]
]
и map применяет фильтр length к каждому элементу списка
[
3,
4,
5
]