系统依赖管理软件

系统依赖管理软件

我正在寻找一种可帮助管理各种系统之间依赖关系的工具。我所说的系统是指硬件(主机)以及软件系统,例如主机 X 上的服务 A 依赖于主机 Y 上的服务 B 才能运行。目标是能够知道当我拔掉电源时哪些系统停止工作。我最感兴趣的是管理服务依赖关系,但应该以简化的方式包括网络。

我认为规则系统如下(包含许多针对标准服务的预定义规则等):

  • 主机 X 上的服务 A 需要访问主机 Y 上的服务 B
  • 主机 Y 上的服务 B 是标准服务 (SMTP)
  • 服务 SMTP 侦听 TCP 端口 25
  • ...

理想情况下,我可以“虚拟地”拔掉邮件服务器的插头,依赖管理系统会告诉我这会产生什么影响。

请注意,我正在寻找一种或多或少简单但仍然可行方法。我我想编写自己的模拟软件,我希望这个系统管理低级依赖关系(例如软件模块/库依赖关系)。

这样的系统存在吗?如果存在,那么这些系统叫什么?你知道哪些实现方式?

编辑:请指出那些可以解决更大问题但提供类似内容的解决方案。也许我只是在这里思维受限,你可以帮助我跳出思维定式。

答案1

听起来你描述的是一个正确实施的 CMDB(配置管理数据库),它不仅仅是一个资产登记册 - 它应该能够显示系统和系统组件之间的依赖关系。它们往往很昂贵,通常作为 ITIL 管理套件的一部分出售。

当然,这只是一张图(在计算机科学意义上),所以我确信你可以用一堆文本文件和一些 Unix CLI 工具做同样的事情。问题在于当事情发生变化时如何保持更新,这就是为什么在理想情况下,你有一个发现工具来填充它,并将其与你的变更管理流程联系起来。

答案2

这可能不是一个实用的建议,而且我不知道如何管理,可能需要一些编码......

无论如何,make这是一个依赖管理器,尽管针对不同的用途。但编译单元和服务器只是资源……因此,您只需使用文件名来建模资源即可。如果文件存在,则资源已启动,否则资源已关闭。运行make将告诉您受影响的内容……例如,像这样的 Makefile 可以解决问题(这是针对 GNU 的make):

%::
    touch $@

resource_A: resource_B resource_C

resource_B: resource_C resource_D

您可以省略没有依赖关系的资源。

那么你将得到以下结果:

$ rm resource_D
$ make
touch resource_D
touch resource_B
touch resource_A

并且您知道哪些资源受到了影响。

相关内容