Take the 2-minute tour ×
Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

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.

share|improve this question

2 Answers 2

up vote 1 down vote accepted

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.

share|improve this answer
    
Ah, great! Thanks to you I could finally search for an actual term and found this somewhat interesting article: erp4it.typepad.com/erp4it/2004/10/cmdb_chaos_and_.html –  paprika Sep 24 '10 at 14:53

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.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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