SaltStack 中 Ansible 的 "when" 子句的等价物是什么?

What is the equivalent of Ansible's "when" clause in SaltStack?

对于下面给出的 Ansible 代码,我如何在 SaltStack 中实现类似的功能(特别是 when 子句)?

---
- include: install-redhat.yml
  when: ansible_os_family == "RedHat"

- include: install-debian.yml
  when: ansible_os_family == "Debian"

我必须为此使用 Jinja2 模板吗?看起来 unlessonlyif 只能测试 shell 命令的 return 代码。

是的,你必须为此使用 jinja。 像

{% if grains['os'] == 'Redhat' %}
include:
  - install-redhat
{% endif %}

但我宁愿将状态包含在顶级文件中 例如,在 top.sls 中,您可以执行

'os:Redhat':
  - match: grain
  - state1_redhat
  - state2_redhat

'os:FreeBSD':
  - match: grain
  - freebsd1
  - freebsd2