I'm looking for a tool that helps managing dependencies between various systems. By systems I mean hardware (hosts) as well as software systems, e.g. service A on host X depends on service B on host Y to function. The goal is to be able to tell what stops working when I pull a plug. I'm mostly interested in managing service dependencies, but networking should be included in a simplified manner.

I think of a rule system like the following (with lots of predefined rules for standard services etc.):

  • service A on host X needs to access service B on host Y
  • service B on host Y is a standard service (SMTP)
  • service SMTP listens on TCP port 25
  • ...

Ideally, I could "virtually" pull the plug of the mail server and the dependency management system would tell me what is going to be affected by that.

Note that I'm looking for a more or less simplistic approach that is still manageable. I don't want to write my own simulation software and I don't want this system to manage low-level dependencies (e.g. software module/library dependencies).

Do such systems exist? If yes: what are these systems called and what implementations do you know?

EDIT: Please also point out solutions that solve a bigger problem but offer something similar as part of it. Maybe I'm just constrained in my thinking here, you can help me to think outside the box.

closed as off-topic by HopelessN00b Jan 21 '15 at 19:15

This question appears to be off-topic. The users who voted to close gave this specific reason:

If this question can be reworded to fit the rules in the help center, please edit the question.

locked by HopelessN00b Jan 21 '15 at 19:16

This question exists because it has historical significance, but it is not considered a good, on-topic question for this site, so please do not use it as evidence that you can ask similar questions here. This question and its answers are frozen and cannot be changed. More info: help center.

Read more about locked posts here.


Sounds like you're describing a properly-implemented CMDB, Configuration Management DataBase, which is more than just an asset register - it should be able to show the dependencies between systems and components of systems. They tend to be expensive, and they are usually sold as parts of ITIL management suites.

Of course, it's just a graph (in the Comp Sci sense) so I'm sure you could do the same thing with a bunch of text files and some Unix CLI tools. The problem is in keeping it updated when things change, which is why in an ideal world, you have a discovery tool to populate it and it ties into your Change Management process.


Possibly not a practical suggestion and I do not know how manageable would be, possibly with some coding...

Anyways, make is a dependency manager, albeit targeted for a different use. But a compilation unit and a server are just resources... so a you can just model a resource with a filename. If the file exists, the resource is up, otherwise is down. And running make will tell you what is affected... e.g. a Makefile like this does the trick (this is for GNU make):

    touch $@

resource_A: resource_B resource_C

resource_B: resource_C resource_D

You can omit resources w/o dependencies.

then this is what you get:

$ rm resource_D
$ make
touch resource_D
touch resource_B
touch resource_A

And you know what resources are affected.

Not the answer you're looking for? Browse other questions tagged or ask your own question.