如何定义SaltStack State的输出格式以简化执行结果获取?
SaltStack State输出格式简化方法
要让State执行的输出更接近直接调用模块的简洁格式,可通过以下几种方式实现:
1. 命令行临时指定简化输出
执行State时添加--state-output=terse参数,会只保留核心执行结果,去掉冗余的State元数据:
salt '*' state.apply ha_action --state-output=terse
该参数的可选值包括:
full:默认格式,包含全部元数据terse:简化输出,仅展示minion ID、执行结果状态(成功/失败)及关键输出changes:仅展示实际产生变更的任务结果
如果需要更精准地提取数据,可结合--out=json输出JSON格式,再用工具(如jq)过滤出所需字段:
salt '*' state.apply ha_action --out=json | jq '.TEST[] | {pid: .changes.pid, retcode: .changes.retcode, stdout: .changes.stdout, stderr: .changes.stderr}'
这样就能得到和直接调用模块一致的输出结构。
2. 配置文件持久化设置
若希望每次执行State都默认使用简化输出,可在Salt的配置文件(/etc/salt/master或/etc/salt/minion)中添加以下配置:
state_output: terse
保存配置后重启Salt服务,后续执行State时会自动采用简化格式。
3. 自定义输出器(进阶)
如果上述方法仍不满足需求,可编写自定义Salt输出器,直接格式化State返回的数据为你需要的结构。自定义输出器需放置在Salt的_output目录下(如/srv/salt/_output/custom.py),实现对State结果的解析和重排。
内容的提问来源于stack exchange,提问作者Tony
相关产品推荐
相关产品推荐

