【发布时间】:2017-07-17 20:20:21
【问题描述】:
我刚开始使用 saltstack,所以任何人都可以帮助解决这个问题:如果里面的一个语句失败,如何使整个 state.sls 失败?是必需品
要求/观看
适合这个吗?
【问题讨论】:
标签: salt-stack configurationmanager
我刚开始使用 saltstack,所以任何人都可以帮助解决这个问题:如果里面的一个语句失败,如何使整个 state.sls 失败?是必需品
要求/观看
适合这个吗?
【问题讨论】:
标签: salt-stack configurationmanager
您可以使用必备条件,所有依赖状态以及所需的状态都会失败。
另一种方法是在单个状态失败时中止整个执行:
abort_on_failure_state_example:
test.fail_without_changes:
- failhard: True
不会执行进一步的状态,即使是来自其他包含的 sls 文件的状态。 我用它来确保在应用状态之前设置一些必需的粒度,而不必在每个状态上检查/要求它们。
这在https://docs.saltstack.com/en/latest/ref/states/failhard.html中有记录
【讨论】:
嗯。您可以指定仅当另一个状态也成功应用时才会应用某个状态。像这样:
vim:
pkg.installed: []
/etc/vimrc:
file.managed:
- source: salt://edit/vimrc
- require:
- pkg: vim
vimrc 文件只有在 vim 包安装成功后才会被管理。如果 vim 已经安装或者在此状态之后它是新安装的包,这并不重要。如果 pkg: vim 安装成功,它将运行第二个状态。
如果您有可能失败的特定状态,这很有用。您可以将require 添加到所有其他状态,以确保只有在此特定状态成功时才会应用它们。
回答您的问题:
如果其中一个失败,则不可能使 state.sls 中的所有状态都失败。您可以通过使用 salt '*' state.apply state test=True 运行 state.sls 来解决此问题,以查看会发生什么。如果其中一个状态失败,您可以决定不实际应用该状态。
我希望这能回答您的问题。如果仍然不清楚,您可能想提出一个例子:-)
【讨论】: