【问题标题】:Track failure of command on a Salt minion跟踪 Salt Minion 上的命令失败
【发布时间】:2015-07-18 15:35:19
【问题描述】:

我最近一个月都在用盐。每当我运行一个命令说sudo salt '*' test.ping 时,master 会 ping 所有的 minions,并且响应是所有启动并运行的 minions 的列表。输出类似于:

{
"minion_1": true
}
{
"minion_2": true
}
{
"minion_3": true
}

在master的conf文件中,返回类型配置为JSON。 但是如果我通过 salt master 执行了一个不正确的命令,比如sudo salt '*' test1.ping,那么 master 会返回类似这样的内容

{
"minion_1": "'test1.ping' is not available."
}
{
"minion_2": "'test1.ping' is not available."
}
{
"minion_3": "'test1.ping' is not available."
}

在上面显示的两个输出中,该命令在主机的 shell/终端上给出了成功退出代码。我们如何跟踪哪些 Minion 无法执行命令。我对它是什么类型的错误不感兴趣,我只需要某种或其他方式来跟踪未能执行命令的奴才。

最后一个解决方案是编写一个解析器,它将读取完整的输出并自行决定。希望有更好的解决方案。

【问题讨论】:

    标签: salt-stack


    【解决方案1】:

    绝望的原因

    目前我不会依赖 Salt 的 CLI 退出代码(版本 2014.7.5)-there are still many issues opened 来解决这个问题。

    获取有效的 JSON 输出

    --static 选项可以修复 JSON 输出:

    如果使用--out=json,您可能也需要--static。如果没有 static 选项,您将获得每个 minion 的 JSON 字符串。

    否则,上面 Salt 给出的输出包含 多个 对象(每个 minion 一个),这不是有效的 JSON(JSON 需要 单个 对象、数组或值)文档)和通过标准 JSON 解析器加载整个输出的简单方法将失败。 documentation(截至5188d6c)中甚至提到了它:

    一些 JSON 解析器可以猜测一个对象何时结束以及一个新对象何时开始,但很多不能。

    除此之外,一些 Salt 选项(如 show_jid)还会将字符串发送到 STDOUT,STDOUT 会将其与执行报告混合并使 JSON 输出格式无效。选项--static 也解决了这个问题。

    更新:解析器检测 Salt 执行失败

    这个问题让我很紧张,所以我很快就用example how it is used @ b819961d生下了this Python script @ 75e42af

    注意:这不会解决任意 Salt 命令的输出(包括上面的 test.ping),但与状态执行的输出相关的问题已包含在内。上面test.ping问题还有一个解决方案——可以从状态运行,然后可以通过脚本分析输出。查看如何从状态或*.sls 文件in this answer 中调用执行模块。

    功能(代码中的详细信息):

    • 处理来自highstateorchestrate 跑步者的输出。
    • 处理多个 Minion 和任意数量的命令的输出。
    • 报告摘要“? of N”和总体结果。
    • 可用作脚本和模块的独立文件。

    唯一的限制是它需要 JSON 输出(Salt 选项 --out json),因为在将其提供给解析器之前很容易解决所讨论的问题。

    【讨论】:

      【解决方案2】:

      上述解析器仅适用于 test.ping 命令。 如果必须执行多个命令,我们将不得不编写更强大的解析器。

      【讨论】:

      • 我更新了答案以使其足够健壮。 @Inder Kumar Rathore
      • @uvsmtid 我刚刚编辑(可能正在格式化)这个答案,我对此一无所知。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-14
      • 1970-01-01
      • 2017-11-13
      • 1970-01-01
      • 2023-01-26
      • 1970-01-01
      • 2017-09-30
      相关资源
      最近更新 更多