在 SaltStack 中根据 file.managed 设置条件 cmd.run

Set up a conditional cmd.run based on file.managed in SaltStack

我有一个 SaltStack 状态文件 (sls),其中定义了一个非常简单的状态。

MyStateRule:
  file.managed:
    - source: salt://scripts/rule.ps1
    - name: 'c:\scripts\rule.ps1'
  cmd.run:
    - name: powershell c:\scripts\rule.ps1
    - require:
      - file: MyStateRule

当我运行一个state.apply命令时,cmd.run似乎每时间,我认为这是有道理的。当需要将托管文件复制到 minion 时,我想要的只是 运行。在那种情况下我可以使用 file.managed 吗?我需要更改什么,以便在复制文件时脚本仅 运行s?

知道了 -- 而不是使用 "require," 使用 onchanges:

cmd.run:
  - name: powershell c:\scripts\rule.ps1
  - onchanges:
    - file: MyStateRule