jinja2的“任何”和“所有”过滤器(Ansible)

时间:2019-04-02 09:16:43

标签: ansible jinja2

我很难找到列表的基本过滤器:“ any”(如果列表中的任何值都可以强制转换为true,则返回true),“ all”(返回{{1}) }只能将列表中的所有值强制转换为true

我可以使用true来模拟any,但是看起来像是黑客,我在使用my_list|map()|bool函数时遇到了麻烦。

UPD:

我发现了这个(另一个奇怪的)黑客。

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

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

1 个答案:

答案 0 :(得分:0)

是的,您只能使用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