抑制 salt-call 的摘要,但显示警告和错误

问题描述 投票:0回答:1

我试图抑制 salt-call/salt state.apply 的所有输出,除非出现任何类型的错误或警告;没有输出意味着也没有摘要

--state-verbose 或 --state-output 的组合不会使摘要保持沉默。

添加 --out=quiet 消除了摘要,但也消除了警告和错误,仅提供返回代码。

目前我是这样处理的:

salt-call state.apply <my_state> --state_output=mixed --state_verbose=false --out-file=/tmp/state-out-tmp-$$.txt
(($?)) && cat /tmp/state-out-tmp-$$.txt
rm /tmp/state-out-tmp-$$.txt

...但这似乎有点过分了。

我缺少一些选项组合吗?

salt-stack
1个回答
0
投票

简单的方法是输出 json 并通过额外的解析步骤将其通过管道传输:

salt-call state.apply <my_state> --out=json | jq '.local[] | select(.result == false)'

更简洁的方法是实现自己的输出器,它返回您想要看到的内容:

def output(data, **kwargs):
    failing = {host: {state: ret["comment"] for state, ret in r.items() 
                      if ret["result"] is False} 
               for host, r in data.items()}
    return json.dumps(failing, indent=4)

请注意,还应该记录错误和警告,因此您可以简单地执行:

salt-call state.apply <my_state> --out=quiet --log-level=warning
© www.soinside.com 2019 - 2024. All rights reserved.