我有一个内部 Perl 脚本,急需重构。为了避免重复造轮子,我正在寻找是否存在与之相当的开源版本,但一直找不到。
该脚本在所有主机上作为守护进程运行,并允许我执行如下操作:
- 在 Host1 上运行 ProcessA。
- 在 Host2 上,一旦 ProcessA 在 Host1 上成功完成,就运行 ProcessB。
- 在 Host1 上,一旦 ProcessB 在 Host2 上成功完成,就运行 ProcessC。
无论如何,这不是什么火箭科学,但我似乎找不到任何可以复制该功能的东西。 RunDeck很接近了,但我不明白它如何管理流程工作流跨不同主机。
这里有人有我应该调查的事情吗?
答案1
这可以通过RunDeck,为每个单独的主机步骤使用一个作业,并使用更高级别的作业来协调这些作业。尽管 rundeck 没有完全达到这一级别的协调之内工作流,它确实允许你将多个作业链接在一起以获得相同的效果
例如:
为每个操作“在 hostY 上运行 processX”(JobA-C)创建一个作业。这些作业将使用节点调度功能和正确的过滤器仅应用于 hostY。
创建一个顶级作业,其工作流使用作业引用按顺序执行作业 AC,而不是使用节点调度。
运行顶层作业将逐步按顺序运行其他作业,等待每个作业完成后再进入下一步。
您可以将顶级作业配置为“keepgoing”:也就是说,即使一个步骤失败,也继续执行所有后续步骤。
您还可以将低级作业配置为并行针对多个节点,而顶级作业仍然一次只执行一步。
答案2
Skybot 调度器也许能够做你想做的事 - 不是 100%确定它可以处理跨主机依赖位,但它非常强大,而且它是首先想到的东西。