如何在 Saltstack orch 状态下执行任何或两个成功的 minion return?

How to do any or two successful minion return in Saltstack orch state?

我尝试编写一些编排状态以将 HBase 转换为高可用模式。为此,检查有几个要求:

  1. Datanode 进程必须启动并且 运行 在 ALL 个节点上。
  2. HRegion 进程必须启动并且 运行 在 ALL 个节点上。
  3. 转换后,namenode 进程必须启动并且 运行 仅在 two 个节点上。

所以我得到了 ALL 含蓄地免费,例如

{# If all minions passed, then this will pass #}
2_1_example_pod_is_dn_running:
  salt.function:
    - name: cmd.run
    - tgt: 'G@stype:hbase and G@pod_name:example_pod'
    - tgt_type: compound
    - arg:
      - ps aux | grep datanode
    - failhard: True

但是如何检查 any 或两个?

{# Pseduo code. This won't work. #}
2_3_example_pod_is_nn_running:
    - name: cmd.run
    - tgt: 'G@stype:hbase and G@pod_name:example_pod'
    - tgt_type: compound
    - arg:
      - ps aux | grep namenode
    - successful_count: 2   {# <== namenode process has to be running on two minions #}
    - failhard: True

所以,你想要的是知道哪些 minion 应该“失败”检查。如果你知道你可以使用 fail_minions 来标记没有 namenode 的 minions。

对于这样的事情,几乎总是要具体。设置它时,您可以知道哪些 minions 将如何拥有名称节点。或者,跳过检查使用子集以仅在 2 个服务器上启动名称节点。 subset 将随机选择目标 minions 子集的服务器数量,运行 仅在该子集上执行命令。