我有一份如下的字典列表:
myvar:
- host: host1
version: 2
- host: host2
version: 5
- host: host3
version: 4
我正在尝试编写一个断言任务,当任何主机的版本 > 3 时该任务就会失败,并且我还希望失败消息包含所有此类主机。例如:
The following hosts have a version greater than 3: host2, host3
最后一部分是关键。我想显示所有未通过检查的主机,而不仅仅是第一个。谢谢。
定义一个中间变量会更容易
hosts_with_version_above_threshold
,因为它将重新用于验证和错误消息。要过滤掉版本高于阈值的主机,我们可以使用selectattr
Jinja2 过滤器,并仅显示消息中的主机 -map
(有关详细信息,请参阅循环和列表理解):