在不满足条件时阻止Salt状态运行

时间:2017-01-22 05:52:54

标签: salt-stack

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

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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

只有具有其他操作系统的服务器才会在您的状态文件中执行实际状态。

代码:

{% 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 %}