Ваши данные не словарь.Это список
- git: true
- gradle: false
Словарь ниже
git: true
gradle: false
Давайте сначала создадим из данных словарь, а затем используем фильтр dict2items .
Игра ниже
- hosts: localhost
vars:
data1:
- {git: true}
- {gradle: false}
data2: {}
tasks:
- set_fact:
data2: "{{ data2|combine(item) }}"
loop: "{{ data1 }}"
- debug:
msg: "{{ data2|dict2items|json_query('[].value') }}"
дает:
"msg": [
true,
false
]
dict2items доступно начиная с Ansible 2.6.В более старых версиях используйте простой filter_plugin hash_utils.py
$ cat filter_plugins/hash_utils.py
def hash_to_tuples(h):
return h.items()
def hash_keys(h):
return h.keys()
def hash_values(h):
return h.values()
class FilterModule(object):
''' utility filters for operating on hashes '''
def filters(self):
return {
'hash_to_tuples' : hash_to_tuples
,'hash_keys' : hash_keys
,'hash_values' : hash_values
}
Задание ниже
- debug:
msg: "{{ data2|hash_values }}"
дает тот же результат, что и конструкция с dict2items выше.Возможно, вы захотите попробовать другие фильтры и просмотреть подробную информацию о filter_plugin .