Фильтры «Любой» и «Все» для jinja2 (Ansible) - PullRequest
1 голос
/ 02 апреля 2019

У меня проблемы с поиском базовых фильтров для списка: 'any' (вернуть true, если любое значение в списке можно преобразовать в true), 'all' (вернуть true только всех значений в список можно преобразовать в true).

Я могу эмулировать any с помощью my_list|map()|bool, но это похоже на взлом, и у меня проблемы с функцией all.

UPD:

Я нашел этот (еще один странный) взлом.

  • любой: my_list|map('bool')|max
  • все: my_list|map('bool')|min

Есть ли лучшие (идиоматические) способы?

1 Ответ

0 голосов
/ 03 мая 2019

Да, вы можете просто использовать all и any.

Вот пример книги с их использованием. (Это работает для меня с Ansible 2.5.1.)

---
- hosts: localhost
  tasks:
   - assert:
       that:
         - mixed | any
         - not (mixed | all)
         - all_true | any
         - all_true | all
         - not (all_false | any)
         - not (all_false | all)
     vars:
       mixed:
         - false
         - true
         - false
       all_true:
         - true
         - true
         - true
       all_false:
         - false
         - false
         - false
...