when: "{{ ['pkg_mgr', 'python'] | difference(ansible_facts.keys()) | length == 0 }}"
Q: "Я не доволен тем, насколько ужасно это выглядит. Я был бы более чем рад видеть более чистые решения."
A: Пустой список оценивается как False
в Ansible. Нет необходимости проверять длину списка. Ansible условие when
расширяет выражение по умолчанию. Нет необходимости закрывать его в фигурных скобках. Эквивалентное условие:
when: not ['pkg_mgr', 'python']|difference(ansible_facts.keys())
Python3 возвращает
dictionary view object
вместо списка для методов
dict.keys(), dict.values(), and dict.items()
. Добавьте фильтр
list
, чтобы сделать код переносимым. См.
словарь просмотров .
when: not ['pkg_mgr', 'python']|difference(ansible_facts.keys()|list)