SaltStack:调用 sls 文件的单个状态

gue*_*tli 15 saltstack

我无法调用 sls 文件的单个状态。

整个 sls 文件有效

这有效:

salt-ssh w123 state.sls monitoring
Run Code Online (Sandbox Code Playgroud)

这有效:

salt-ssh w123 state.show_sls monitoring
Run Code Online (Sandbox Code Playgroud)

上述输出中的一项:

monitoring_packages:
    ----------
    __env__:
        base
    __sls__:
        monitoring.packages
    pkg:
        |_
          ----------
          pkgs:
              - python-psutil
        - installed
        |_
          ----------
          order:
              10000
Run Code Online (Sandbox Code Playgroud)

我试过的

现在我只想调用monitoring_packages,而不是整个 sls 文件:

失败:

salt:/srv # salt-ssh w123 state.sls_id monitoring_packages  monitoring
w123:
    Data failed to compile:
----------
    No matching sls found for 'monitoring' in env 'base'
Run Code Online (Sandbox Code Playgroud)

失败:

salt:/srv # salt-ssh w123 state.single monitoring.monitoring_packages
w123:
    TypeError encountered executing state.single: single() takes at least 2 arguments (1 given)
Run Code Online (Sandbox Code Playgroud)

如何称呼我的单身状态monitoring_packages

版本

salt:/srv # salt-ssh --version
salt-ssh 2015.8.3 (Beryllium)
Run Code Online (Sandbox Code Playgroud)

小智 14

我遇到了这篇文章,同时也试图弄清楚如何通过常规的salt调用(即不是salt-ssh)来做到这一点。

如果您有以下 SLS 文件 (foo.sls):

bar:
   file.managed:
       - source: salt://some/file
Run Code Online (Sandbox Code Playgroud)

您可以运行以下命令以仅执行状态文件中的该条目:

salt '*' state.sls_id bar foo
Run Code Online (Sandbox Code Playgroud)

再说一次,我也不知道这一点。我在Google 小组讨论的评论中找到了答案,该评论指向此处的提交。


小智 2

看起来这是一个已知的问题:https://github.com/saltstack/salt/issues/29253

它确实可以在 salt-ssh 之外工作。看起来需要将函数添加到该包装器中。