【发布时间】:2020-12-03 03:01:07
【问题描述】:
我需要从获取软件安装盐状态中排除标有这些自定义添加颗粒中的任何一个的某些小兵:
exclude:
- applications
- application_xyz
以下语法有效,并防止任何带有“应用程序”颗粒的奴才安装任何东西:
{% if not "applications" in grains.get('exclude', []) %}
但现在我需要更具体一些,这就是我认为使用“或”逻辑的地方。到目前为止,我已经尝试了以下方法,但都不起作用:
{% if not "applications" or "application_xyz" in grains.get('exclude', []) %}
{% if not "applications" in grains.get('exclude', []) or not "application_xyz" in grains.get('exclude', []) %}
我用How to use logic operators in jinja template on salt-stack (AND, OR)作为参考,所以我觉得我可能是在正确的轨道上。
非常感谢任何帮助或建议!
【问题讨论】:
-
在我看来,第一种方法在语法上是不正确的。第二个看起来语法正确,但逻辑上有错误。德摩根的一项法律规定:
not (A or B) = not A and not B。如需参考,请参阅en.wikipedia.org/wiki/De_Morgan%27s_laws
标签: jinja2 salt-stack