Salt:如果 file.replace 没有找到任何要替换的内容,则引发错误

Salt:如果 file.replace 没有找到任何要替换的内容,则引发错误

也许我瞎了,但我找不到让salt-ssh呼叫失败的方法,如果文件替换并未替换任何一行。

如果我提供的模式不匹配,那么我希望引起注意。

例子:

enable_foo:
  file.replace:
    - name: /etc/foo/foo.config
    - pattern: DisallowBar
    - repl: AllowBarUntilMidnight
  • 案例 1:发现并替换了 DisallowBar,并且被替换了:OK
  • Case2:AllowBarUntilMidnight 已在文件中:确定
  • 案例 3:DisallowBar 和 AllowBarUntilMidnight 不在文件中:我希望 salt 失败。

答案1

Saltstack 是一个配置管理工具,因此当使用状态时,您可以定义您想要的内容,通常不必担心某件事是否完成时会收到警告。

因此,在您的示例中,我会说“您想用字符串 Y 替换模式 X”,就是这样。如果模式存在,Saltstack 会替换该模式,如果不存在,则不执行任何操作。

此外,在配置管理中,您通常希望状态是“幂等的”。这意味着连续执行必须产生相同的结果。无论您执行一次还是 1000 次状态都应该相同。我不确定您想要做的事情是否真的由 saltstack 提供。

更新:当然,你可以用 saltstack 做你想做的事,但你可能需要分成两个状态:一个检查当前状态,最终失败(检查 failhardhttps://docs.saltstack.com/en/latest/ref/states/failhard.html)以及另一个替换

相关内容