2017-05-03 72 views

回答

1

好吧。您可以指定只有在成功应用另一个状态时才会应用某个状态。像这样:

vim: 
    pkg.installed: [] 

/etc/vimrc: 
    file.managed: 
    - source: salt://edit/vimrc 
    - require: 
     - pkg: vim 

vimrc文件只有在安装了vim包的情况下才会被管理。如果vim已经安装,或者在这个状态之后它是一个新的安装包,它并不重要。如果成功安装pkg:vim,它将运行第二个状态。

如果您有可能失败的特定状态,这非常有用。您可以将require添加到所有其他状态,以确保只有在此特定状态成功时才会应用它们。

若要回答您的问题: 如果其中一个失败,则无法使state.sls中的所有状态都失败。你可以通过运行你的state.sls来解决这个问题,用salt '*' state.apply state test=True来看看会发生什么。如果其中一个州会失败,您可以决定不实际应用州。

我希望这能回答你的问题。如果现在还不清楚,你可能想拿出一个例子:-)

+0

谢谢:)这是我需要确保事情正确的方式。 – Anatoly

2

你可以使用必要条件和所有根据状态将失败以及所需的一个。

一种替代方法是中止在单个状态失败整个执行:

abort_on_failure_state_example: 
    test.fail_without_changes: 
    - failhard: True 

没有进一步的状态将被执行,即使是那些从其它包括SLS文件。 我使用它来确保在应用状态之前设置了一些必需的谷物,而不必在每个状态下检查/要求它们。

这是记录在https://docs.saltstack.com/en/latest/ref/states/failhard.html