Пример:
В случае со словарем это просто:
---
- name: Assert if variable is list or dict
hosts: localhost
connection: local
gather_facts: false
vars:
mydict: {}
mylist: []
tasks:
- name: Assert if dictionary
assert:
that: ( mydict is defined ) and ( mydict is mapping )
Но при проверке списка мы должны быть уверены, что это не отображение, а не строка и итерируемый:
- name: Assert if list
assert:
that: >
( mylist is defined ) and ( mylist is not mapping )
and ( mylist is iterable ) and ( mylist is not string )
Если вы тестируете со строкой, логическим значением или цифрой c, утверждение будет ложным.
Еще один хороший вариант:
- name: Assert if dictionary
assert:
that: ( mydict is defined ) and ( mydict | type_debug == "dict" )
- name: Assert if list
assert:
that: ( mylist is defined ) and ( mylist | type_debug == "list" )