当不满足条件时,阻止 运行 的 Salt 状态

prevent a Salt state from running when condition is not met

我有一个Salt状态,我只想在目标操作系统不是RedHat时执行;如果 OS 是 RedHat,那么我想 return 只是一条错误消息。

为了做到这一点,我一直在 .sls 文件的顶部添加:

{% if grains['os'] == RedHat %}
RedHat not supported
{% endif %}

以上是有效的,因为我插入的消息不是有效的条目,然后当目标操作系统是 RedHat 时编译失败,但我觉得这只是一个 hack;我想知道这个问题是否有更优雅的解决方案,有什么想法吗?

使用下面的代码,RedHat 服务器只会 运行 test.succeed_without_changes 状态。

状态:test.succeed_without_changes 将确保您的 minion 已执行此作业并且它没有对您的日志记录有用的更改。

只有具有另一个 OS 的服务器正在执行您状态文件中的真实状态。

代码:

{% if grains['os'] == RedHat %}

RedHat-server-logging-state:
  test.succeed_without_changes:
    - name: RedHat OS detected

{% else %}

Execution-state-1:
  test.succeed_with_changes:
    - name: State 1 executed on non RedHat server

Execution-state-2:
  test.succeed_with_changes:
    - name: State 2 executed on non RedHat server

{% endif %}