如何在 Saltstack orch 状态下执行任何或两个成功的 minion return?
How to do any or two successful minion return in Saltstack orch state?
我尝试编写一些编排状态以将 HBase 转换为高可用模式。为此,检查有几个要求:
- Datanode 进程必须启动并且 运行 在
ALL
个节点上。
- HRegion 进程必须启动并且 运行 在
ALL
个节点上。
- 转换后,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 子集的服务器数量,运行 仅在该子集上执行命令。
我尝试编写一些编排状态以将 HBase 转换为高可用模式。为此,检查有几个要求:
- Datanode 进程必须启动并且 运行 在
ALL
个节点上。 - HRegion 进程必须启动并且 运行 在
ALL
个节点上。 - 转换后,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 子集的服务器数量,运行 仅在该子集上执行命令。