jinja2 - 无法使 Salt 状态下的 IF OR Jinja 逻辑工作
问题描述
我需要从获得软件安装 Salt 状态中排除标有这些自定义添加颗粒中的任何一个的某些奴才:
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 operator in jinja template on salt-stack (AND, OR)作为参考,所以我觉得我可能走在了正确的轨道上。
非常感谢任何帮助或建议!
解决方案
对于遇到相同情况的任何人,我发现以下内容非常有效。
{% if not ['applications','application_xyz'] | intersect(grains.get('exclude', [])) %}
在这里,任何具有应用程序或 application_xyz 的仆从都将被传递。
推荐阅读
- pandas - 使用 If else 语句的偏移函数
- python - 按组求和,保留 NA
- kubernetes - 我正在尝试通过结束我的 splunk 云实例的事件来测试我的 splunk HEC 令牌,如何验证我拥有正确的 HEC 主机名?
- bash - 如何从所有键值对中打印键
- alloy - Alloytools 崩溃并且不再启动
- android-studio - 在 android studio 3.5 的清单文件中编写意图过滤器时没有对 SdkConstants 的建议
- reactjs - 错误的类属性 - Emmet VSCode
- ruby-on-rails - 如何设置默认标题?
- python - Python - 将 csv 文件上传到 Dropbox
- postgresql - PostgreSQL Upsert DO 更新