I've used tools like puppet to manage individual systems, with generally a high level of success. Where puppet falls down is that it isn't good at managing dependencies outside of an individual server.
For example, on a MySQL server I configure puppet to do the following:
- Configure authentication on the machine to hit my LDAP server
- Configure apt to use my local repository mirror
- Install MySQL packages
- Write my.cnf
- Start MySQL
- Create users in the database
In this set of steps there are a number of dependencies resolved - for example, I can't start the database service unless I've installed the packages, which I can't do unless the apt repo is configured correctly.
This MySQL server is one box in a master->master replication setup. In an ideal world, puppet (or another similar tool) would let me represent the fact that server B needs to wait until server A is available and then attempt to establish a replication relationship with it.
A lot of text here - basically what I'm asking is: are there any tools like puppet which can manage inter-machine dependencies like this?