【问题标题】:'Any' and 'all' filters for jinja2 (Ansible)jinja2 (Ansible) 的“任何”和“所有”过滤器
【发布时间】:2019-04-02 09:16:43
【问题描述】:

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

我可以通过使用my_list|map()|bool 来模拟any,但它看起来像一个hack,我在all 函数上遇到了问题。

更新:

我发现了这个(又一个奇怪的)hack。

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

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

【问题讨论】:

标签: ansible jinja2


【解决方案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

【讨论】:

  • template error while templating string: no filter named 'all'.
  • 您使用的是哪个版本的 Ansible?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-08
  • 2017-12-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多