jinja2 (Ansible) 的“任何”和“全部”过滤器

Geo*_*lin 6 jinja2 ansible

我很难找到列表的基本过滤器:“any”(true如果列表中的任何值可以转换为,则返回true),“all”(true仅返回列表中的所有值可以转换为true)。

any我可以通过使用来模拟my_list|map()|bool,但它看起来像是一个黑客,而且我在all功能上遇到了麻烦。

更新:

我发现了这个(又一个奇怪的)黑客行为。

  • 任何:my_list|map('bool')|max
  • 全部:my_list|map('bool')|min

有更好的(惯用的)方法吗?

fal*_*ets -1

是的,您可以只使用allany

这是使用它们的示例手册。(这对我的 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
Run Code Online (Sandbox Code Playgroud)