如何实现一种状态,等待其他小兵完成某些工作然后执行某些状态?

问题描述

如何实现一种状态,等待其他小兵完成某些工作然后执行某些状态?

例如,我有一个名为minion-aha1到minion-aha3的奴才集群,并且在这3个奴才上安装了hadoop和hbase。现在,我想将它们转换为HA模式。假设minion-aha1是领导者。因此,逻辑流程为:

Start hadoop and hbase on all 3 minions
-> minion-aha1 wait till rest of minions are hadoop and hbase are on and healthy
-> minion-aha1 call join (e.g. stop namenode,hdfs namenode -initializeSharedEdits,start namenode)
-> rest minions call nn2 (e.g. hdfs namenode -bootstrapStandby,start namenode)

我已经知道如何将hbase转换为HA模式,并且我可以设置谷物的领导者,只是很好奇如何将上述过程缩小到单行,即

salt 'minion-aha*' state.apply hadoop.hbase_to_ha 

甚至是salt.orch状态都可以接受。由于minion-aha1永远不知道其余小兵的状态,因此上述操作将失败。换句话说,如果开发人员幸运的话,它可能成功运行一次,但我希望解决方案每次都能成功运行。

谢谢。

解决方法

如果要在不使用业务流程SLS的情况下解决此问题,则可以查看以下方法之一:

  • 使用imap-simple将一个小兵的信息发布到Master,然后其他人可以检索该信息
  • 使用Salt Mine允许一个Minion生成要在另一个上执行的作业

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...