Chapter 3. Introducing PuppetDB
A model based on agents that receive and apply a catalog received from the Puppet Master has an intrinsic limitation: the client has no visibility and direct awareness about the state of resources of the other nodes.
It is not possible, for example, to execute during the catalog application functions that do different things according to different external conditions. There are many cases where information about other nodes and services could be useful to manage local configurations, for example, we might:
- Need to start a service only when we are sure that the database, the queues, or any external resource it relies upon are already available in some external nodes
- Configure a load balancer that dynamically adds new servers, if they exist
- Have to manage the setup of a cluster which involves specific sequences of commands to be executed in a certain order on different nodes
The declarative nature of Puppet's DSL might look inappropriate to manage...